【问题标题】:Moment/Timezone - converting a date to unix时刻/时区 - 将日期转换为 unix
【发布时间】:2016-04-22 18:22:29
【问题描述】:

为什么下面会返回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

【问题讨论】:

    标签: javascript timezone momentjs unix-timestamp


    【解决方案1】:

    我认为问题在于使用可能位于美国的 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
    • 祖鲁语/UTC = 19:00
    • 英国 (DST) = 20:00

    【讨论】:

    • 如果我有一个像 YYYY-MM-DD H:i:s 这样的日期,我可以使用 moment 将其转换为 unix 吗?
    猜你喜欢
    • 2016-06-01
    • 1970-01-01
    • 2021-12-15
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多