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