gpt4 book ai didi

javascript - 为什么 ISO 日期转换在 javascript 环境中不一致以及如何修复?

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:53 25 4
gpt4 key购买 nike

在 Node 10.15.13 上,new Date('01.01.2017') 结果为“2016-12-31T23:00:00.000Z”。

然而,在我构建的浏览器docker镜像(同一 Node 版本)中,结果是“Sun Jan 01 2017 00:00:00 GMT+0100(中欧标准时间)”。。

是什么导致了这种差异以及如何解决它,例如单元测试?

最佳答案

您的差异很可能是由于您的本地计算机(或服务器)设置了时区,而您的 docker 容器没有设置时区。

这是我运行的第一个测试:

$ docker run -ti node:10 node -
> new Date('01.01.2017');
2017-01-01T00:00:00.000Z

然后我想知道服务器的时区是否可能对答案产生影响,事实上确实如此:

$ docker run -ti node:10 env TZ=Europe/Brussels node  -
> new Date('01.01.2017');
2016-12-31T23:00:00.000Z

您可以将这与这两个“系统”日期结果关联起来:

  • 未设置任何时区
$ docker run -ti node:10 date
Mon Mar 18 22:17:43 UTC 2019
  • 设置时区
$ docker run -ti node:10 env TZ=Europe/Brussels date
Mon Mar 18 23:17:59 CET 2019
<小时/>

由于您指出了您尝试使用的确切版本,因此从我的 Angular 来看,我仍然有可重现的行为:

  • 未设置时区
$ docker run -ti node:10.15.3 node -
> new Date('01.01.2017');
2017-01-01T00:00:00.000Z
  • 设置时区
$ docker run -ti node:10.15.3 env TZ=Europe/Brussels node  -
> new Date('01.01.2017');
2016-12-31T23:00:00.000Z

关于javascript - 为什么 ISO 日期转换在 javascript 环境中不一致以及如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55230501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com