Konvertieren Sie das Datum mit moment.js in UTC

Lesezeit: 4 Minuten

Benutzer-Avatar
Benutzer1956816

Wahrscheinlich und einfache Antwort darauf, aber ich kann anscheinend keinen Weg finden, moment.js dazu zu bringen, eine UTC-Datumszeit in Millisekunden zurückzugeben. Hier ist, was ich tue:

var date = $("#txt-date").val(),
    expires = moment.utc(date);

Irgendeine Idee, was ich falsch mache?

Benutzer-Avatar
Matt Johnson-Pint

Dies wird gefunden in der Dokumentation. Mit einer Bibliothek wie Moment fordere ich Sie auf, die gesamte Dokumentation zu lesen. Es ist Ja wirklich wichtig.

Angenommen, der Eingabetext wird in Bezug auf die Ortszeit des Benutzers eingegeben:

 var expires = moment(date).valueOf();

Wenn der Benutzer angewiesen wird, tatsächlich ein UTC-Datum/eine UTC-Zeit einzugeben, dann:

 var expires = moment.utc(date).valueOf();

  • Bearbeitet – “einfach” entfernt. 🙂

    – Matt Johnson-Pint

    10. April 2015 um 17:02 Uhr

  • Und wenn ich bereits ein Momentdatum mit einer Zeitzone habe, wie kann ich es in UTC konvertieren?

    – Incerteza

    22. April 2015 um 9:27 Uhr

  • @Alexander- .utc()

    – Matt Johnson-Pint

    22. April 2015 um 15:32 Uhr

  • Das geht nicht. Das ändert nur die am Datum verwendeten Methoden, nicht das Datum selbst.

    – Kolleen

    19. Juni 2015 um 17:26 Uhr

  • @Colleen – ja, aber normalerweise würde man dann eine dieser Methoden aufrufen, z .format(), die den UTC-Wert ausgeben würde. Es kippen Ändern Sie den internen Datumswert selbst, weil a Date verfolgt bereits einen UTC-Zeitstempel. Es sind immer nur die darauf aufgerufenen Methoden, die bestimmen, ob UTC oder Ortszeit ausgegeben werden. Moment ist in dieser Hinsicht dasselbe.

    – Matt Johnson-Pint

    19. Juni 2015 um 18:19 Uhr

Benutzer-Avatar
Bruno Quaresma

Ich benutze diese Methode und es funktioniert. ValueOf funktioniert bei mir nicht.

moment.utc(yourDate).format()

  • Dies funktioniert laut Dokumentation. konvertiert Ortszeit in UTC.

    – Kishor Pawar

    28. Februar 2017 um 11:44 Uhr

  • Hier ist etwas faul. Ich verwende moment.js ver. 2.17.1 und wenn „yourdate“ auf „2017-10-14T21:00:00Z“ (en-us) lautet, gibt das obige Snippet genau das gleiche Ergebnis „2017-10-14T21:00:00Z“ zurück, was offensichtlich nicht der Fall ist utc da ich in gmt+3 bin. Das korrekte Ergebnis wäre ‘2017-10-15T00:00:00+03:00’ und Sie erhalten dies über ‘moment(yourDate).format()’.

    – XDS

    10. Oktober 2017 um 10:59 Uhr


  • “moment”: “^2.29.1”, -> das funktioniert bei mir —> moment().utc().format()

    – moropesa

    12. Juli um 20:48 Uhr


Stand: moment.js version 2.24.0

Angenommen, Sie haben eine lokale Datumseingabe, das ist der richtige Weg um deine umzuwandeln Terminzeit oder Zeit Eingang zu koordinierte Weltzeit :

var utcStart = new moment("09:00", "HH:mm").utc();

oder falls Sie ein Datum angeben

var utcStart = new moment("2019-06-24T09:00", "YYYY-MM-DDTHH:mm").utc();

Wie Sie sehen können, wird die Ergebnisausgabe in UTC zurückgegeben:

//You can call the format() that will return your UTC date in a string 
 utcStart.format(); 
//Result : 2019-06-24T13:00:00 

Aber wenn Sie dies wie unten tun, ist es wird nicht in UTC umwandeln:

var myTime = new moment.utc("09:00", "HH:mm"); 

Sie setzen Ihre Eingabe nur auf UTC-Zeit, es ist, als ob Sie erwähnen, dass myTime in UTC ist, …. die Ausgabe wird 9:00 sein

  • Wenn die Eingabe in UTC erfolgt, ist var s = new moment(“2019-06-24T09:00”, “YYYY-MM-DDTHH:mm”).utc(); ist die richtige Leseweise. Weitere Aufrufe von s.format() wandeln es in Ortszeit um.

    – du Tyagi

    3. August 2021 um 10:48 Uhr

Benutzer-Avatar
Sohan

Das wird die Antwort sein:

moment.utc(moment(localdate)).format()
localdate="2020-01-01 12:00:00"

moment(localdate)
//Moment<2020-01-01T12:00:00+08:00>

moment.utc(moment(localdate)).format()
//2020-01-01T04:00:00Z

moment.utc(date).format(...); 

ist der Weg zu gehen, da

moment().utc(date).format(...);

verhält sich komisch…

  • Könnten Sie bitte das seltsame Verhalten von erläutern moment().utc(date).format(...)?

    – Freeman Lambda

    6. Juni 2017 um 9:21 Uhr

  • Das Verhalten ist nicht seltsam, das sind verschiedene Methoden. Der Erste moment.utc(date) ist für Parsing das date. Der Zweite moment().utc(date) ist für manipulieren die aktuelle Zeit (moment()) und die date Parameter ist da nutzlos .utc() erwartet in diesem Fall keine Parameter.

    – CodingHamster

    7. Dezember 2017 um 7:48 Uhr

Benutzer-Avatar
Tyler2P

Das hat bei mir funktioniert. Andere könnten es nützlich finden.

let date="2020-08-31T00:00:00Z"
moment.utc(moment(date).utc()).format() // returns 2020-08-30T22:00:00Z

  • Könnten Sie bitte das seltsame Verhalten von erläutern moment().utc(date).format(...)?

    – Freeman Lambda

    6. Juni 2017 um 9:21 Uhr

  • Das Verhalten ist nicht seltsam, das sind verschiedene Methoden. Der Erste moment.utc(date) ist für Parsing das date. Der Zweite moment().utc(date) ist für manipulieren die aktuelle Zeit (moment()) und die date Parameter ist da nutzlos .utc() erwartet in diesem Fall keine Parameter.

    – CodingHamster

    7. Dezember 2017 um 7:48 Uhr

Benutzer-Avatar
Timothy Perez

Wenn alles andere fehlschlägt, initialisieren Sie einfach mit einer Umkehrung Ihres lokalen Offsets neu.

var timestamp = new Date();
var inverseOffset = moment(timestamp).utcOffset() * -1;
timestamp = moment().utcOffset( inverseOffset  );

timestamp.toISOString(); // This should give you the accurate UTC equivalent.

  • Das funktioniert nicht. Was funktioniert, ist das Einstellen der keepOffset Parameter auf true, wie in moment(timestamp).toISOString(true),

    – Chris Haines

    12. April 2018 um 9:22 Uhr


1244930cookie-checkKonvertieren Sie das Datum mit moment.js in UTC

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy