javascript
  • timezone
  • momentjs
  • unix-timestamp
  • 2016-04-22 2 views 0 likes 
    0

    Почему следующее возвращение Fri, 22 Apr 2016 13:01:00 GMT?Moment/Timezone - преобразование даты в unix

    Не должно быть 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

    Edit: обновлены fiddle. Если я перехожу в Fri, 22 Apr 2016 13:01, он теперь выплевывает Fri, 22 Apr 2016 12:01:00 GMT, поэтому он игнорирует любой DST, как ожидалось, для UTC, но я все еще смущен, почему он не возвращает Fri, 22 Apr 2016 17:01:00 GMT?

    ответ

    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
    • UK (DST) = 20:00
    Смежные вопросы