你如何将日期转换为时刻

时间:2014-08-30 09:14:27

标签: mongodb momentjs

我试图转换我存储在db(mongo)中的日期(时刻),然后与当前日期进行比较以获得差异。但是,当我从db检索过去的日期并使用当前时刻时,我无法使用diff()。在数据库插入中,我插入{startDate:moment(), ...}。然后,在我检索startDate日期之后,我尝试获得差异

var now = moment();
console.log(now.diff(startDate))

但它会抛出一个error

我存储moment而不是js date对象,但我仍然收到错误,因此我不确定我实际上应该如何获得差异储存值并将其与当前时刻进行比较。

2 个答案:

答案 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)