ReactJS - Как я могу изменить формат даты с MongoDB Date.now - PullRequest
0 голосов
/ 08 октября 2018

Я использую MongoDB и ReactJS.

Итак, я хочу, чтобы пользователь мог видеть при создании нового проекта, но mongodb отображает этот формат даты "2018-10-08 18: 09: 56.628", и яхочу отображать только "2018-10-08".Что я могу сделать?

Моя схема проекта:

let mongoose = require("mongoose");

let projectSchema = new mongoose.Schema({

  projectname: String,
  typeofproject: String,
  imageURL: String,
  dateMonthFrom: String,
  dateYearFrom: String,
  dateMonthTo: String,
  dateYearTo: String,
  tasks: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Tasks'
  }],
user: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'
  }],
created: {
    type:Date,
    default: Date.now
    }
})

module.exports = mongoose.model('Project', projectSchema);

Мой код реакции:

[...]
  <header>
     <div>
        <h1>

{this.state.project.projectname} // "Title"
{this.state.project.created} // "2018-10-08 18:09:56.628"

        </h1>

     </div>
  </header>
[...]

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Поскольку вы используете mongoose, вы можете создать виртуальное поле , которое может вернуть вам отформатированную дату, чтобы ваш код реакции мог быть чище.

Вы можете использовать эту функцию или использовать библиотеку moment (или многие другие)

function dateFormat(date) {
    const month = date.getMonth();
    const day = date.getDate();
    const monthString = month >= 10 ? month : `0${month}`;
    const dayString = day >= 10 ? day : `0${day}`;
    return `${date.getFullYear()}-${monthString}-${dayString}`;
}

console.log(dateFormat(new Date()))

Настройка виртуального поля будет выглядеть следующим образом:

projectSchema
  .virtual('created.formatted')
  .get(function () {
    return dateFormat(this.created)
  });
0 голосов
/ 08 октября 2018

Вам нужно использовать какую-то функцию форматирования.Вы можете написать свои собственные, используя встроенные функции Date, но такие библиотеки, как moment (и, возможно, moment-timezone ) делают это чрезвычайно просто.

moment(this.state.project.created).format('YYYY-mm-dd')

Если вы не хотите загружать стороннюю библиотеку, вы можете использовать встроенные функции Date и написать собственный метод.

function formatDate(date) {
    const currentMonth = date.getMonth();
    const monthString = currentMonth >= 10 ? currentMonth : `0${currentMonth}`;
    const currentDate = date.getDate();
    const dateString = currentDate >= 10 ? currentDate : `0${currentDate}`;
    return `${date.getFullYear()}-${monthString}-${currentDate}`;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...