Skip to content

Wenn Sie das heutige Datum mit einem anderen aktuellen Datum vergleichen, wird das falsche Datum zurückgegeben. Warum?

Lösung:

Basierend auf der Dokumentation (und kurzen Tests) erstellt moment.js Wrapper um Datumsobjekte. Die Aussage:

var now = moment();

erstellt ein "Moment"-Objekt, das in seinem Herzen ein neues Date-Objekt hat, das wie von erstellt wurde new Date(), sodass Stunden, Minuten und Sekunden auf die aktuelle Uhrzeit eingestellt werden.

Die Aussage:

var releaseDate = moment("2012-09-25");

erstellt ein Moment-Objekt, das in seinem Herzen ein neues Date-Objekt hat, das wie von erstellt wurde new Date(2012, 8, 25) wobei die Stunden, Minuten und Sekunden für die lokale Zeitzone alle auf Null gesetzt werden.

moment.diff gibt einen Wert zurück, der auf einem the basiert gerundet Unterschied in ms zwischen den beiden Daten. Um den vollen Wert zu sehen, pass auf true als dritter Parameter:

 now.diff(releaseDate, 'days', true)
 ------------------------------^

Es hängt also von der Tageszeit ab, zu der der Code ausgeführt wird, und der lokalen Zeitzone, ob now.diff(releaseDate, 'days') ist null oder eins, auch wenn es am selben lokalen Datum ausgeführt wird.

Wenn Sie nur Daten vergleichen möchten, verwenden Sie:

var now = moment().startOf('day'); 

wodurch die Zeit auf 00:00:00 in der lokalen Zeitzone eingestellt wird.

Die Antwort von RobG ist für die Frage richtig, daher ist diese Antwort nur für diejenigen gedacht, die suchen, wie man Daten in momentjs vergleicht.

Ich habe versucht, startOf('day') wie oben erwähnt zu verwenden:

var compare = moment(dateA).startOf('day') === moment(dateB).startOf('day');

Dies hat bei mir nicht funktioniert.

Ich musste isSame verwenden:

var compare = moment(dateA).isSame(dateB, 'day');
Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.