为什么node.js服务器和mongodb之间的时间有所不同?

时间:2018-10-30 18:11:41

标签: javascript node.js mongodb time

在我的mongoDB数据库中,我有一个文档,其中“ dia”属性是一个Date,填充为:

  

'ISODate(“ 2018-09-07T20:00:00.000Z”)'

当我尝试在我的node.js服务器中获取此文档时出现问题。当前,我正在使用猫鼬,当我执行model.findById('5b9d04c728c1640c07bb054f')时,它会返回对象罚款,但属性'dia'具有以下值的事实除外:

  

'Fri Sep 07 2018 17:00:00 GMT-0300(-03)'。

有人知道我尝试获取文档时为什么保存在数据库中的日期和猫鼬制作的日期之间有区别吗?

2 个答案:

答案 0 :(得分:0)

很有可能将其保存为GMT并在GMT-3时区中读取。很有可能node.js假定它获取GMT日期时间并根据您的语言环境对其进行格式化。您可能需要阅读具有所需语言环境的日期(而不是默认的GMT),或在应该解决差异的语言环境GMT中打印日期。

答案 1 :(得分:0)

问题是我的数据库正在格林威治标准时间(格林威治标准时间)存储每个文档,并且我的服务器正在本地时区GMT(-3)运行。为了使用正确的日期查询mongoDB,我使用了带有以下参数的moment.js:

var date = moment.utc(dia).format();

获取结果“日期= 2018-09-01T20:00:00Z”,这与数据库中的时间相同。

UTC(世界标准时间)与GMT相同,但是现在正在使用。