无法用moment.js覆盖date
我有一个活动和MongoDB的集合。 活动也有一个date。 我正在尝试dynamic构build一个表,其中包含保存在我的集合中的所有活动。 因此,我想在将JSON对象数组发送到我的玉文件之前,使用moment.js更改date的格式。
我试图做一个新的结果数组,并将其发送到我的玉文件。
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")
当它只需要datestring部分时:
"2016-03-30T00:00:00.000Z"
所以得到datestring,并通过,下面的代码片段显示了如何做到这一点。
var dateString = 'ISODate("2016-03-30T00:00:00.000Z")'.replace(/^[^\"]+\"([^\"]+)\".*$/,'$1'); document.write(dateString);
改变这个:
moment(results[key].date).format('ddd, hA');
至
moment(new Date(results[key].date.toString()),moment.ISO_8601).format('ddd, hA');