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

    Warum gibt die folgende Fri, 22 Apr 2016 13:01:00 GMT zurück?Moment/Timezone - Konvertieren eines Datums in Unix

    Sollte es nicht Fri, 22 Apr 2016 17:01:00 GMT sein (4 Stunden für Zeitzone hinzugefügt)?

    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 aktualisiert. Wenn ich Fri, 22 Apr 2016 13:01 übergebe, spuckt es jetzt Fri, 22 Apr 2016 12:01:00 GMT aus, also ignoriert es irgendeine DST wie erwartet für UTC, aber ich bin immer noch verwirrt, warum es Fri, 22 Apr 2016 17:01:00 GMT nicht zurückgibt?

    Antwort

    0

    Ich denke, das Problem war mit jsfiddle, die in den USA basieren kann, so Moment verwendet Lokalisierung.

    Ich habe folgendes auf meinem Node-Server (mit Sitz in London, UK) und der folgende Code funktioniert nun, wenn ich die Ergebnisse worldtimebuddy.com/est-to-utc-converter vergleichen:

    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) 
    

    Zusammenfassung, werden nun die Zeiten korrekt konvertiert:

    • in New York = 15:00
    • Zulu/UTC = 19:00
    • UK (DST) = 20:00
    Verwandte Themen