Я использую 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>
[...]

Вам нужно использовать какую-то функцию форматирования. Вы можете написать свой собственный, используя встроенные функции Date, но библиотеки, такие как момент (и, возможно, момент-часовой пояс), делают это чрезвычайно простым.
moment(this.state.project.created).format('YYYY-mm-dd')
Если вы не хотите использовать стороннюю библиотеку, вы можете использовать встроенные функции Дата и написать свой собственный метод.
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}`;
}
Поскольку вы используете mongoose, вы можете создать виртуальное поле, который может возвращать вам отформатированную дату, чтобы ваш код реакции был более чистым.
Вы можете использовать эту функцию или использовать библиотеку момент (или многие другие)
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.info(dateFormat(new Date()))Настройка виртуального поля будет выглядеть так:
projectSchema
.virtual('created.formatted')
.get(function () {
return dateFormat(this.created)
});
Возможно, немного поздно, но вы можете использовать объект Date следующим образом:
const createdDate = new Date(this.state.project.created)
//Then, get the full year
....
{ createdDate.getFullYear() }
Поступая так, вы избегаете использования внешней библиотеки в качестве momentJs.
Первый сработал! Спасибо: D мой пример: <h1> {moment (this.state.project.created) .format ('YYYY-mm-dd') } </h1>