【问题标题】:How to get the right date format in node.js?如何在 node.js 中获得正确的日期格式?
【发布时间】:2019-07-07 18:05:50
【问题描述】:

我正在使用 MEAN 堆栈编写 Web 应用程序。 我需要将 mongoose 提供的日期保存到 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”

【问题讨论】:

    标签: node.js mongodb mongoose momentjs


    【解决方案1】:

    MongoDB 以 UTC 存储日期,这是一种表示时间的通用方式。如果你想显示不同的格式,你可以使用moment.format(你已经使用过)或MongoDB聚合$dateToString

    您将无法更改 Date 存储方式的底层表示。

    【讨论】:

      猜你喜欢
      • 2016-04-17
      • 2012-05-27
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 2020-05-30
      • 2014-05-17
      • 2011-12-29
      相关资源
      最近更新 更多