【发布时间】:2019-04-28 17:57:16
【问题描述】:
我刚刚遇到了这样一种情况:new Date(1999, 0, 1, 1, 1, 1).toISOString() 上的断言在我的 ci 进程 (travis) 中运行时导致测试失败,但在我的本地计算机上传递。
let dString = new Date(1999, 0, 1, 1, 1, 1).toISOString();
expect(dString).to.be('1999-01-01T08:01:01.000Z');
在 travis.ci 上运行时,出现断言错误:
预计“1999-01-01T01:01:01.000Z”等于“1999-01-01T08:01:01.000Z”
这似乎是一个时区问题,但我不确定我明白为什么?在我的本地机器上创建新日期似乎使用 UTC+8 偏移量。
但是,当在 travis 上运行时,它似乎使用UTC+0?
日期时间和时区总是让我感到困惑。
我应该如何编写此测试以使其在任何环境中都能通过
【问题讨论】:
-
您可以使用ntpjs.org,这将根据您的网络时间向您发送时间戳:
-
这个测试的目的是什么?
-
@customcommander 显然这不是我正在运行的实际测试。我已经按照 SO 指南 stackoverflow.com/help/mcve 进行了简化。如果您只是好奇,它是平台 API 客户端的查询构建器库的一部分。
-
@DupinderSingh - 再一次,当前系统时间与这个问题没有任何关系,因此推荐 ntpjs 是题外话。对于与将当前时间与服务器时间对齐相关的问题,请保留此类建议。谢谢。
标签: javascript date datetime timezone travis-ci