本地计算机vs travis.ci为`Date.toISOString()`返回不同的结果

时间:2019-04-28 17:57:17

标签: javascript date datetime timezone travis-ci

我只是遇到了这样一种情况:在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吗?

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

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

1 个答案:

答案 0 :(得分:1)

我使用以下行在UTC中创建日期,现在它在两个平台上都通过了:

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