【发布时间】:2017-05-31 15:43:35
【问题描述】:
我有一组日期和时间,格式如下:
01.07.2013 16:10。
我知道我必须重新排列以匹配 ISO 标准,所以我最终得到了这样的字符串:
2013-07-01T16:10.
由此,我需要创建一个Date 对象。在这里阅读了很多关于此的问题后,我对如何为此添加时区感到有些困惑。所有时间都是纽约市当地时间,我也想在其中存储日期。
因此,由于 Javascript 从我的机器中获取时区,我将其更改为来自 NYC 的时区。但是,以下部分最让我困惑:
> print(new Date("2013-07-01T16:10"))
Mon Jul 01 2013 16:10:00 GMT+2000 (EDT)
问题:为什么我的当地时间是 GMT-0400(纽约的时间)时显示的是 GMT+2000?这个对吗'?如果没有,如何正确完成?
--更新:
我正在使用 mongoDB 3.4.4,解释器版本是 MozJS-38。 systemsetup -gettimezone 返回 America/New_York。在 chrome 中运行 mongo-express 显示:Mon Jul 01 2013 06:00:00 GMT+0200 (EDT) for ISODate("2013-07-01T04:00:00.000Z") 已存储,但 shell 显示 Tue Jul 02 2013 00:00:00 GMT+2000 (EDT) for print(new Date("2013-07-01T04:00:00.000Z"));。
【问题讨论】:
-
你确定它说的是
"GMT+2000"吗?如果是这样,您机器的时区数据已损坏。世界上没有比格林威治标准时间早 20 小时的地方。此外,在这种格式下,纽约将是"GMT-0400"。你确定你没有在这里输入零吗? -
是的,我确定。是的,我也希望它是
"GMT-0400"。我使用的是 MacOS,更改时区后没有重新启动。也许这就是原因。 -
好的,但是你写了
"GMT-4000",所以你把零放在了错误的位置。你确定你没有对"GMT+2000"做同样的事情吗?你的意思是"GMT+0200"? -
您不需要重新启动计算机,但您应该重新启动浏览器。你使用的是什么浏览器?您的时区在 MacOS 中设置为哪个特定条目? (终端使用
sudo systemsetup -gettimezone查看) -
另外,
print在大多数浏览器中启动打印预览对话框,并且在 Node.js 中没有定义。你在什么环境下print有效?通常是console.log。
标签: javascript mongodb date datetime