如何在node.js中获得正确的日期格式?

时间:2019-07-07 18:05:50

标签: node.js mongodb mongoose momentjs

我正在使用MEAN堆栈对Web应用程序进行编码。 我需要将猫鼬提供的日期保存到node.js中的记录中,但是似乎没有考虑保存的字符串的格式。

当我创建一条新记录(命名为Actualite)时,.save()方法将调用moment()来格式化由console.log(“ pubDateàsauvegarder vaut:”,pubDate)正确打印的pubDate。

但是,似乎该日期格式未保存在数据中,如console.log(“ dataàsauvegarder vaut:\ n”,data)所示;

// Here is the model of actualite defined in node.js:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const ActualiteSchema = Schema({
    // Actualité
    title: String,
    description: String,
    // Image
    idImage: { type: Schema.Types.ObjectId, ref: 'Images' },
}, {
    timestamps: { createdAt: false, updatedAt: 'pubDate' },
    versionKey: false
});

module.exports = mongoose.model('Actualites', ActualiteSchema);

// Here is the code used to create a new actualite

exports.create = (req, res) => {
    // Requête de validation
    if (!req.body) {
        return res.status(400).send({
            message: "Le contenu d'une actualité ne peut pas être vide !"
        });
    }

    // Créer une actualité
    var actualite = new Actualite({
        // Actualité
        title: req.body.title,
        description: req.body.description,
        // Image
        idImage: req.body.idImage,
        pubDate: req.body.pubDate,
    });

    // Sauvegarder un produit dans la base de données
    actualite.save()
        .then(data => {
            pubDate = moment(actualite.pubDate, 'YYYY-MM-DDTHH:mm:ss.SSSZ').format('ddd, D MMMM YYYY HH:mm:ss ZZ');
            console.log("pubDate à sauvegarder vaut :", pubDate);

            console.log("data à sauvegarder vaut :\n", data);
            console.log("");
            res.send(data);
        }).catch(err => {
            res.status(500).send({
                message: err.message || "Erreur lors de la création de l'actualité"
            });
        });
};

// This is the output generated by console.log():

pubDate à sauvegarder vaut : dim., 7 juillet 2019 19:55:52 +0200
data à sauvegarder vaut :
 { _id: 5d223228d8eb9525807e48cb,
  title: 'Test StackOverflow',
  description: 'this is a test',
  idImage: null,
  pubDate: 2019-07-07T17:55:52.532Z }

我希望数据中的pubDate为“ dim。,7 juillet 2019 19:55:52 +0200”,而不是“ 2019-07-07T17:55:52.532Z”

1 个答案:

答案 0 :(得分:0)

MongoDB将日期存储在UTC中,这是一种表示时间的通用方式。如果希望显示其他格式,则可以使用moment.format(如已使用)或MongoDB聚合$dateToString

您将无法更改日期存储方式的基本表示形式。