0

在流星中:

Events.insert({ 'start': new Date(2018, 9, 5, 7, 0, 0, 0) });

在 Meteor Mongo 中保存的日期:

{ 
  "start" : ISODate("2018-10-05T11:00:00.000+0000"), // UTC time
}

浏览器将按预期将日期显示为上午 7 点 (EDT)。

但是,在 Compose.io 中,相同的 Mongo 插入将保存日期:

{ 
  "start" : ISODate("2018-10-05T07:00:00.000+0000"), // UTC time
}

浏览器将日期显示为凌晨 3 点。

Meteor 的 Mongodb 似乎通过补偿我的 EDT 并增加 4 小时来做正确的事情。Compose 按原样插入日期。

在不硬编码值的情况下进行补偿的最佳方法是什么?

4

1 回答 1

0

我的解决方案是使用没有任何 UTC 偏移量的 ISO 8601 字符串,而不是 new Date()。

Events.insert({ 'start': '2018-10-5T05:00:00);

这样,Mongo 不会将其存储为 ISO 日期,而只是一个字符串,浏览器将读取该字符串作为用户输入的确切日期。浏览器不会偏移时区,它只是按原样作为字符串插入。

于 2018-10-15T03:03:12.387 回答