我试图转换我存储在db(mongo)中的日期(时刻),然后与当前日期进行比较以获得差异。但是,当我从db检索过去的日期并使用当前时刻时,我无法使用diff()
。在数据库插入中,我插入{startDate:moment(), ...}
。然后,在我检索startDate
日期之后,我尝试获得差异
var now = moment();
console.log(now.diff(startDate))
但它会抛出一个error。
我存储moment
而不是js date
对象,但我仍然收到错误,因此我不确定我实际上应该如何获得差异储存值并将其与当前时刻进行比较。
答案 0 :(得分:0)
如果您插入startDate:moment()
,则会保存moment
对象的内容..而不是您期望的Date
字段。
例如,在mongo
shell中:
> db.mycollection.insert({startDate:moment()})
WriteResult({ "nInserted" : 1 })
> db.mycollection.findOne()
{
"_id" : ObjectId("5401a7805a5b0e4e0bfe5170"),
"startDate" : {
"_isAMomentObject" : true,
"_i" : null,
"_f" : null,
"_l" : null,
"_strict" : null,
"_isUTC" : false,
"_pf" : {
"empty" : false,
"unusedTokens" : [ ],
"unusedInput" : [ ],
"overflow" : -2,
"charsLeftOver" : 0,
"nullInput" : false,
"invalidMonth" : null,
"invalidFormat" : false,
"userInvalidated" : false,
"iso" : false
},
"_d" : ISODate("2014-08-30T10:29:20.529Z")
}
}
Date
字段中保存了正确的startDate._d
,但我认为您实际要做的是使用{{1}在startDate
字段中保存单个值构造函数:
new Date()
现在你应该可以按预期执行日期数学了:
> db.mycollection.insert({startDate:new Date()})
WriteResult({ "nInserted" : 1 })
> doc = db.mycollection.findOne()
{
"_id" : ObjectId("5401a8fe5a5b0e4e0bfe5173"),
"startDate" : ISODate("2014-08-30T10:35:42.736Z")
}
答案 1 :(得分:0)
您可以直接将Date对象传递给moment.js构造函数。
var my_date = new Date()
moment(my_date)