在shell上我尝试了测试db
post = {"title" : "My Blog Post", "content" : "Here's my blog post.", ... "date" : new Date()}
但是当我尝试使用命令
检索它时db.blog.find();
它给我输出
{ "_id" : ObjectId("4f13fdc4af1aaf90a686f8ae"), "title" : "My Blog Post", "content" : "Here's my blog post.", "date" : ISODate("2012-01-16T10:35:54.985Z") }
为什么它的显示日期为ISODate?我可以不在js中返回新的Date()日期保存日期吗?
答案 0 :(得分:1)
ISODate是shell的辅助函数,用于包装javascript的Date构造函数。调用ISODate()
和new Date()
应该生成完全相同的Date对象,它将以不同方式打印。
> var date = new Date(2012,01,16,10,35,54,985)
> var isodate = ISODate("2012-01-16T10:35:54.985Z")
> date.constructor == isodate.constructor
true
> date.constructor
function Date() {
[native code]
}
> isodate.constructor
function Date() {
[native code]
}
但:
> date.valueOf()
1329384954985
> isodate.valueOf()
1326710154985
>
但是如果你使用完全相同的毫秒来构造它们,那么它们是相等的:
> date = new Date(isodate.valueOf())
> print(date)
Mon Jan 16 2012 11:35:54 GMT+0100 (CET)
> date.valueOf() == isodate.valueOf()
true