Node.js mongodb和nodejs中的不同日期

Node.js mongodb和nodejs中的不同日期,node.js,mongodb,date,Node.js,Mongodb,Date,Mongo的日期与系统和节点的日期设置不同。我怎样才能解决这个问题 mongo: > new Date() ISODate("2014-06-23T08:53:45.585Z") > exit bye root@vm85820:/var/node/mrandom.com# date Mon Jun 23 12:54:14 MSK 2014 root@vm85820:/var/node/mrandom.com# node > new Date() Mon Jun 23 20

Mongo的日期与系统和节点的日期设置不同。我怎样才能解决这个问题

mongo:

> new Date()
ISODate("2014-06-23T08:53:45.585Z")
> exit
bye
root@vm85820:/var/node/mrandom.com# date

Mon Jun 23 12:54:14 MSK 2014
root@vm85820:/var/node/mrandom.com# node
> new Date()
Mon Jun 23 2014 12:54:24 GMT+0400 (MSK)
Debian系统:

> new Date()
ISODate("2014-06-23T08:53:45.585Z")
> exit
bye
root@vm85820:/var/node/mrandom.com# date

Mon Jun 23 12:54:14 MSK 2014
root@vm85820:/var/node/mrandom.com# node
> new Date()
Mon Jun 23 2014 12:54:24 GMT+0400 (MSK)
节点:

> new Date()
ISODate("2014-06-23T08:53:45.585Z")
> exit
bye
root@vm85820:/var/node/mrandom.com# date

Mon Jun 23 12:54:14 MSK 2014
root@vm85820:/var/node/mrandom.com# node
> new Date()
Mon Jun 23 2014 12:54:24 GMT+0400 (MSK)

它们没有什么不同。MongoDB时间以UTC为单位,另一个以MSK时区(+4小时)为单位。

日期相同,但MongoDB shell以UTC格式显示时间(使用ISODate包装器)。在MongoDB shell中,当您使用
new Date()
时,它将使用ISODate包装器创建一个新的日期对象,但如果您只使用
Date()
它将以字符串形式返回当前日期

> Date()
Mon Jun 23 2014 11:08:05 GMT+0200 (CEST)
您还可以使用
toTimeString
方法将
Date
对象转换为字符串:

> new Date().toTimeString()
11:08:05 GMT+0200 (CEST)

在内部,MongoDB将
Date
对象存储为64位整数,表示自Unix纪元以来的毫秒数。

Yes。一个是国际标准时间(UTC),另一个是当地时间。你的问题到底是什么?为什么会出现这个问题?您可能担心的是,在节点应用程序中使用
new Date()
与mongo shell不同。事实并非如此。应用程序的底层驱动程序将序列化为UTC时间,就像从shell调用返回的一样。试试看,它很管用。