Mongodb 如何将日期转换为时刻
我正在尝试转换存储在db(mongo)中的日期(时刻),然后与当前日期进行比较以获得差异。但是,当我从db中检索过去的日期并使用当前时刻时,我不能使用Mongodb 如何将日期转换为时刻,mongodb,momentjs,Mongodb,Momentjs,我正在尝试转换存储在db(mongo)中的日期(时刻),然后与当前日期进行比较以获得差异。但是,当我从db中检索过去的日期并使用当前时刻时,我不能使用diff()。在db insert中,我正在插入{startDate:moment(),…}。然后,在我检索了startDatedate之后,我尝试获取diff var now = moment(); console.log(now.diff(startDate)) 但是它抛出了一个错误 我存储的是时刻而不是js日期对象,但我仍然得到了错误,因此
diff()。在db insert中,我正在插入{startDate:moment(),…}
。然后,在我检索了startDate
date之后,我尝试获取diff
var now = moment();
console.log(now.diff(startDate))
但是它抛出了一个错误
我存储的是时刻
而不是js日期
对象,但我仍然得到了错误,因此我不确定如何实际获得存储值的差异,并将其与当前时刻进行比较。如果插入开始日期:时刻()
,将保存时刻
对象的内容。。不是您期望的日期
字段
例如,在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")
}
}
在startDate.\u d
字段中保存了一个适当的Date
,但我认为您实际需要做的是使用new Date()
构造函数在startDate
字段中保存一个值:
> db.mycollection.insert({startDate:new Date()})
WriteResult({ "nInserted" : 1 })
> doc = db.mycollection.findOne()
{
"_id" : ObjectId("5401a8fe5a5b0e4e0bfe5173"),
"startDate" : ISODate("2014-08-30T10:35:42.736Z")
}
现在,您应该能够按预期执行日期计算:
> var now = moment();
// Diff in milliseconds (http://momentjs.com/docs/#/displaying/difference/)
> now.diff(doc.startDate)
6825
您可以直接将日期对象传递给moment.js构造函数
var my_date = new Date()
moment(my_date)
您应该使用moment的.toDate()
函数,而不是试图从一个时刻构造一个日期。或者不使用insert,直接调用new Date()
而不使用参数。您不应该使用\u d
属性,这是正确的。它不是moment的公共API的一部分。为了澄清问题,我还尝试使用var date=moment().format('MMMM Do yyy,h:mm:ss a');然后将其存储到数据库中,但当我使用now=moment()格式进行diff时,它不起作用('mmmmdoyyy,h:mm:ssa')。但是,存储newDate(矩()和矩().toDate()确实有效。Thanks@MattJohnson:同意,简单的新日期()。我想矩()调用可能还有其他选项(例如,如果使用时区或其他相对日期便利),但这不是一个很好的例子:)。