我在PhantomJS和Moment.js上的组合遇到了一些麻烦。我想格式化一个unix时间戳,例如{1}用户在PhantomJS的用户时区。但是,我看到一些奇怪的行为。我的机器时区为allConditionsRef.observeEvent(.value, with: { snapshot in
(UTC + 8)。
以下是使用env var 1399089600000
Asia/Hong_Kong
TZ=Asia/Hong_Kong
var moment = require('moment.js');
moment(1399089600000).utc().format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-03 04:00:00 +00:00" which is ok
moment(1399089600000).local().format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-04 05:00:00 +25:00" why +25?
moment(1399089600000).format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-04 05:00:00 +25:00" why +25?
如果未设置TZ=UTC
,事情似乎没问题,
moment(1399089600000).utc().format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-03 04:00:00 +00:00" which is ok
moment(1399089600000).local().format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-04 04:00:00 +24:00" why +24?
moment(1399089600000).format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-04 04:00:00 +24:00" why +24?
使用PhantomJS 2.1.1和Moment.js 2.17.1。
感谢。
更新
TZ
时,moment(1399089600000).utc().format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-03 04:00:00 +00:00" which is ok
moment(1399089600000).local().format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-03 12:00:00 +08:00" which is ok
moment(1399089600000).format('YYYY-MM-DD HH:mm:ss Z');
// "2014-05-03 12:00:00 +08:00" which is ok
= 1500
TZ=Asia/Hong_Kong
时,moment(1399089600000).utcOffset()
= 1440
TZ=UTC
时,moment(1399089600000).utcOffset()
= 480
答案 0 :(得分:0)
当涉及到TZ
环境变量时,PhantomJS与Windows不兼容。
将momentjs
排除在等式之外:
在Windows机器中:
当TZ=UTC
时,new Date().getTimezoneOffset()
会返回错误的-1440
。
但是在Linux机器上(我测试的时候是Ubuntu):
当TZ=UTC
时,new Date().getTimezoneOffset()
会返回正确的0
。
我测试了Linux上TZ
值的其他变体,它们都是正确的。