ReactJS-如何从MongoDB Date.now更改日期格式

时间:2018-10-08 17:35:28

标签: mongodb reactjs date schema

我正在使用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);

我的React代码:

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

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

        </h1>

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

3 个答案:

答案 0 :(得分:2)

您需要使用某种格式设置功能。您可以使用内置的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}`;
}

答案 1 :(得分:0)

由于您使用的是mongoose,因此您可以创建一个virtual field,该日期可以返回给您格式化后的日期,以便您的响应代码更加简洁。

您可以利用此功能或使用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)
  });

答案 2 :(得分:0)

也许有点晚了,但您可以像这样使用对象 Date:

const createdDate = new Date(this.state.project.created)
//Then, get the full year
....
{ createdDate.getFullYear() }

这样做,避免使用外部库作为 momentJs。