webentwicklung-frage-antwort-db.com.de

Konvertieren Sie das Datum in UTC mit moment.js

Wahrscheinlich eine einfache Antwort auf diese Frage, aber ich finde keinen Weg, um moment.js dazu zu bringen, ein UTC-Datum in Millisekunden zurückzugeben. Folgendes mache ich:

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

Irgendeine Idee, was ich falsch mache?

40
user1956816

Dies ist zu finden in der Dokumentation . Mit einer Bibliothek wie Moment fordere ich Sie auf, die gesamte Dokumentation zu lesen. Es ist 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();
77

Ich benutze diese Methode und arbeite. ValueOf funktioniert nicht für mich.

moment.utc(yourDate).format()
22
Bruno Quaresma

Stand: moment.js version 2.24.0

nehmen wir an, Sie haben eine lokale Datumseingabe, dies ist die richtige Methode um Ihre dateTime oder Time Eingabe in _ utc _ umzuwandeln.:

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, 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 

Wenn Sie dies jedoch wie folgt tun, wird nicht in UTC konvertiert:

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

Sie stellen Ihre Eingabe nur auf UTC-Zeit ein. Es ist, als ob Sie erwähnen, dass myTime in UTC ist. Die Ausgabe erfolgt um 9:00 Uhr

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

ist der Weg da zu gehen

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

verhält sich komisch ...

2

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

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

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

hier übergebe ich das Datumsobjekt und konvertiere es in UTC-Zeit.

$.fn.convertTimeToUTC = function (convertTime) {
   if($(this).isObject(convertTime)) {
        return moment.tz(convertTime.format("Y-MM-DD HH:mm:ss"), moment.tz.guess()).utc().format("Y-MM-DD HH:mm:ss");
    }
};
// Returns if a value is an object
$.fn.isObject =  function(value) {
    return value && typeof value === 'object';
};


//you can call it as below
$(this).convertTimeToUTC(date);
1
Invincible

Benötigen Sie etwas, um die Millisekunden zu vergleichen und abzurufen?

Zum Beispiel:

let enteredDate = $("#txt-date").val(); // get the date entered in the input
let expires = moment.utc(enteredDate); // convert it into UTC

Damit haben Sie das Verfallsdatum in UTC . Jetzt können Sie das "Sofort-Datum" in UTC abrufen und vergleichen:

var rightNowUTC = moment.utc(); // get this moment in UTC based on browser
let duration = moment.duration(rightNowUTC.diff(expires)); // get the diff
let remainingTimeInMls = duration.asMilliseconds();
0
ron.camaron