本地机器与 travis.ci 返回“Date.toISOString()”的不同结果



我刚刚遇到了这样一种情况:对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

日期时间和时区总是让我感到困惑。

我应该如何编写此测试,使其在任何环境中都能通过

我使用以下行以 UTC 创建日期,现在它在两个平台上都传递:

new Date(Date.UTC(1999,0,1,1,1,1)).toISOString();

最新更新