时刻/时区 - 将日期转换为unix

时间:2016-04-22 18:22:30

标签: javascript timezone momentjs unix-timestamp

为什么以下内容会返回Fri, 22 Apr 2016 13:01:00 GMT

不应该Fri, 22 Apr 2016 17:01:00 GMT(时区增加4小时)?

var zone = "America/New_York";
var date = 'Fri, 22 Apr 2016 13:01';
$('#ts').text(moment.tz(date, zone).unix()); // 1461330060
// epochconverter.com (1461330060) --> Fri, 22 Apr 2016 13:01:00 GMT ?!!

jsfiddle

修改:已更新fiddle。如果我传入Fri, 22 Apr 2016 13:01它现在吐出Fri, 22 Apr 2016 12:01:00 GMT,那么它会忽略UTC所预期的任何DST,但我仍然感到困惑,为什么它没有返回Fri, 22 Apr 2016 17:01:00 GMT

1 个答案:

答案 0 :(得分:0)

我认为问题是使用jsfiddle,它可能位于美国,所以当下就是使用本地化。

我在我的节点服务器(位于英国伦敦)上执行了以下操作,当我将结果与worldtimebuddy.com/est-to-utc-converter进行比较时,以下代码现在可用了:

var unix = moment.tz('2016-04-22T15:00', "America/New_York").unix();
var zulu = moment.utc(unix, 'X').format();
var local= new Date(zulu).toString();

console.log(unix); // 1461351600 (epochconverter.com --> Fri, 22 Apr 2016 19:00:00 GMT)
console.log(zulu); // 2016-04-22T19:00:00Z
console.log(local); // Fri Apr 22 2016 20:00:00 GMT+0100 (GMT Daylight Time)

总结,时间现已正确转换:

  • 纽约= 15:00
  • Zulu / UTC = 19:00
  • 英国(DST)= 20:00