在Mongo(技术上是RoboMongo):
db.audit.find({source: "junebug"}).limit(50).forEach(function (doc){
print(JSON.stringify(doc));
print(doc.start);
doc.startDt = new Date(doc.start + 'Z');
print(doc.startDt);
});
产生类似的东西:
{"_id":{},"source":"junebug","maxDays":0.05,"start":"2016-11-03 00:00:00","end":"2016-11-03 00:59:59" ...
2016-11-03 00:00:00
Invalid Date
因此,"2016-11-03 00:00:00"+"Z"
无效。但是在Node REPL中:
> var d = new Date("2016-11-03 04:00:00"+"Z")
undefined
> d
2016-11-03T04:00:00.000Z
看起来有效。已验证。我无法解释为什么会发生这种情况。我无法想象Node 6和Mongo的js引擎之间的日期解析会有所不同。
答案 0 :(得分:1)
Mongodb日期对象仅接受以下参数。
您可以通过将Date()方法传递给datetime字符串来指定特定日期。例如:
新日期(" YYYY-mm-dd"),它返回指定日期的ISODate。
新日期(" YYYY-mm-ddTHH:MM:ss"),它指定本地日期时间的日期时间,并返回带有指定日期时间的ISODate,以UTC为单位。
新日期(" YYYY-mm-ddTHH:MM:ssZ"),它以UTC格式指定日期时间,并返回带有指定日期时间的ISODate格式。
您的格式无效,这就是它发出错误的原因。