不知何故,在 Docker 映像重建后,我开始遇到 javascript 时区问题。它曾经可以工作,但是在 Docker 映像更新之后,生成的 Date 对象不再遵守 TZ 设置。结果,我们的时区依赖日期字符串格式测试失败了。
# in the tests
console.log(new Date("2016-04-01T00:00:00.000000+00:00"));
// It is very strange it says (Asia) at the end.
// In fact, it will say whatever I put in TZ
Fri Apr 01 2016 00:00:00 GMT+0000 (Asia)
# in Chrome developer tool
console.log(new Date());
Fri Apr 01 2016 08:00:00 GMT+0800 (CST)
gulpfile.js
gulp.task('test', ['_set_tpe_timezone'], runKarmaWebpackTests);
gulp.task('_set_tpe_timezone', function() {
gutil.log('Setting timezone TZ = Asia/Taipei');
process.env.TZ = 'Asia/Taipei';
return;
});
我正在使用以下设置来运行 javascript 测试:
- 吞咽+业力
- 在 Docker 容器内
- 在 gulpfile 中,在每次测试之前执行以下设置
process.env.TZ = 'Asia/Taipei';
- 使用无头 Chrome 59
cat /etc/timezone
=Etc/UTC