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

问题描述 投票:0回答:1

我刚刚碰到一个场景,在我的ci进程(travis)中运行时,new Date(1999, 0, 1, 1, 1, 1).toISOString()上的断言导致测试失败,但是传递给我的本地机器。

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

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

我应该如何编写这个测试,以便它可以在任何环境中传递

javascript date datetime timezone travis-ci
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.