BEACHTEN SIE DIE ZEITZONE
Ein Javascript-Datum hat keine Kenntnis der Zeitzone . Es ist ein Moment in der Zeit (Ticks seit der Epoche) mit praktischen Funktionen für die Übersetzung in und aus Strings in der "lokalen" Zeitzone. Wenn Sie mit Datumsangaben arbeiten möchten, indem Sie Datumsobjekte verwenden, wie es jeder hier tut, Sie möchten, dass Ihre Daten UTC-Mitternacht zu Beginn des betreffenden Datums entsprechen. Dies ist eine gängige und notwendige Konvention, die es Ihnen ermöglicht, mit Daten unabhängig von der Jahreszeit oder Zeitzone ihrer Erstellung zu arbeiten. Sie müssen also sehr wachsam sein, um den Begriff der Zeitzone zu verwalten, insbesondere wenn Sie Ihr Mitternachts-UTC-Datumsobjekt erstellen.
In den meisten Fällen soll das Datum die Zeitzone des Benutzers widerspiegeln. Klicken Sie, wenn Sie heute Geburtstag haben . Benutzer in Neuseeland und den USA klicken zur gleichen Zeit und erhalten unterschiedliche Daten. In diesem Fall, tun Sie dies...
// create a date (utc midnight) reflecting the value of myDate and the environment's timezone offset.
new Date(Date.UTC(myDate.getFullYear(),myDate.getMonth(), myDate.getDate()));
Manchmal übertrifft die internationale Vergleichbarkeit die lokale Genauigkeit. In diesem Fall sollten Sie dies tun...
// the date in London of a moment in time. Device timezone is ignored.
new Date(Date.UTC(myDate.getUTCYear(), myDate.getyUTCMonth(), myDate.getUTCDate()));
Jetzt können Sie Ihre Datumsobjekte direkt vergleichen, wie es die anderen Antworten vorschlagen.
Nachdem Sie bei der Erstellung darauf geachtet haben, die Zeitzone zu verwalten, müssen Sie auch bei der Rückkonvertierung in eine String-Darstellung darauf achten, dass die Zeitzone nicht berücksichtigt wird. So können Sie sicher verwenden...
toISOString()
getUTCxxx()
getTime() //returns a number with no time or timezone.
.toLocaleDateString("fr",{timezone:"UTC"}) // whatever locale you want, but ALWAYS UTC.
Und vermeiden Sie alles andere, vor allem...
getYear()
, getMonth()
, getDate()
20 Stimmen
Wenn es um DateTime und Manipulation in JS geht, suche ich nicht weiter als momentjs :)
101 Stimmen
Keine Notwendigkeit, Momentjs zu verwenden, um 2 Daten zu vergleichen. Verwenden Sie einfach reines Javascript's Date Objekt. Prüfen Sie die Hauptantwort für weitere Details.
0 Stimmen
Sie können die folgende Antwort lesen: stackoverflow.com/questions/4812152/ Prüfen Sie getDateDifference und getDifferenceInDays, ob es helfen kann.
0 Stimmen
Ich werde Ihnen einen Grund geben, weiter als Moment.js zu schauen ( was ich liebe, ABER... ): Nicht für Schleifenlasten verwenden
0 Stimmen
Für eine nützliche Funktion um die Uhrzeit zu erfahren Differenz getrennt nach Einheiten (Sekunden, Minuten, Stunden, usw.), siehe die Antwort unter stackoverflow.com/questions/1968167/ . Diese Antwort ist jetzt auch verfügbar unter stackoverflow.com/a/46529159/3787376 .
9 Stimmen
Für diejenigen, die wie ich erst später dazugekommen sind, ist moment.js jetzt im "Wartungsmodus". d.h. nicht mehr aktiv entwickelt werden.
1 Stimmen
Für diejenigen, die noch später dazugekommen sind, ist moment.js nicht nur im Wartungsmodus, sondern auch eine riesige Bibliothek (4,21 MB!). Wenn Sie nur einfache Funktionen wie den Vergleich von zwei Daten benötigen, können Sie eine kleine (20kb) Bibliothek ausprobieren, an der ich gearbeitet habe npmjs.com/package/easy-dates