gpt4 book ai didi

javascript - 无法使用 moment.js 覆盖日期

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:49 25 4
gpt4 key购买 nike

我有一系列事件和 MongoDB。事件也有日期。我正在尝试动态构建一个表,其中包含保存在我的集合中的所有事件。因此,我想在将 JSON 对象数组发送到 jade 文件之前使用 moment.js 更改日期格式。

我尝试创建一个新的结果数组并将其发送到我的 jade 文件中。

    router.get('/', function(req, res, next) {
activitiesController.getActivities(function(results) {
if(!results) {
results = [];
}
for(var key in results) {
results[key].date = moment(results[key].date).format('ddd, hA');
}
res.render('index', {
activities: results
})
});
});

结果数组如下所示:

[{
"_id" : ObjectId("56fe2c0d7afcafa412ae19c2"),
"title" : "Fitnessstudios",
"category" : "Sport",
"time" : 2,
"date" : ISODate("2016-03-30T00:00:00.000Z"),
"__v" : 0
}]

最佳答案

您的问题是您传递给 moment.js 的值是:

ISODate("2016-03-30T00:00:00.000Z")

当它只需要日期字符串部分时:

"2016-03-30T00:00:00.000Z"

因此,只获取日期字符串并传递它,下面的代码片段展示了如何做到这一点。

var dateString = 'ISODate("2016-03-30T00:00:00.000Z")'.replace(/^[^\"]+\"([^\"]+)\".*$/,'$1');

document.write(dateString);

moment.js 可能会在没有进一步帮助的情况下很好地解析 ISO 字符串,但是我认为最好告诉它格式,因此您应该使用类似以下内容的内容:

var dateString = results[key].date.replace(/^[^\"]+\"([^\"]+)\".*$/,'$1');
results[key].date = moment(dateString,'YYYY-MM-DDThh:mm:ss.sssZ').format('ddd, hA');

// Wed, 10AM

并且您不应该在数组上使用for..in,您可能会发现与您期望的属性不同且顺序不同的属性。根据需要使用普通的 forwhiledo 循环或其中一种循环方法,例如 forEachmap 等。

关于javascript - 无法使用 moment.js 覆盖日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36355245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com