【发布时间】:2019-02-04 11:29:51
【问题描述】:
刚刚在 Node.js 和 MacOs 中偶然发现了一个有趣的问题 - 基本上,如果您在 .env 文件中运行具有设置时区变量的节点实例,变量 TZ,并且您的本地计算机位于不同的时区,则创建日期为 f* *d 尽可能以麦汁的方式,这样:
时区设置正确
但是当你创建一个新的日期时,时区并没有反映出来
看这个例子,(我的机器在 CET,时区欧洲/布拉格):
~/
11:13 (CET) $ node
new Date()
2019-02-04T10:30:23.053Z # Europe/Prague
new Date().getTimezoneOffset()
-60 # Europe/Prague
.exit
对比在 TZ 环境中设置时区
✔ ~/
11:30 (CET) $ TZ=America/New_York node
new Date()
2019-02-04T10:31:40.968Z # 10:31! :D
new Date().getTimezoneOffset()
300 # America/New_York!
因此不可能创建正确的日期,因为所有 JS 库(如 moment)都在 end Date 对象中使用。 我的看法是,你永远不应该在运行 Node.js 服务器时设置 TZ var,我错过了什么吗?
【问题讨论】:
标签: node.js macos timezone-offset