Wie man den Unterschied zwischen 2 Datumsangaben in Jahren, Monaten und Tagen mit moment.js
Wie man den Unterschied zwischen 2 Datumsangaben in Jahren, Monaten und Tagen mit moment.js?
Zum Beispiel der Unterschied zwischen 4/5/2014 & 2/22/2013 berechnet werden soll, als 1 Jahr, 1 Monat und 14 Tage.
- mögliche Duplikate von die Zeit-Differenz zwischen zwei datetimes
- Tatsächlich, nicht ein Duplikat ist. Die dup umfasst Stunden,Minuten,Sekunden Unterschied. Es ist ein anderes problem, wenn du redest, Kalender-Monate.
- Sind die Jahre, richtig deine Frage? Sie sind beide 2013.
- Sie sind richtig Matt. Ich habe fix die Termine.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Moment.js können nicht mit diesem Szenario direkt. Es erlaubt Ihnen, nehmen Sie die Differenz zwischen zwei Momenten, aber das Ergebnis ist eine verstrichene Zeit in Millisekunden. Moment, hat Dauer Objekt, sondern definiert einen Monat als Feste Einheit von 30 Tagen - was wir wissen, ist nicht immer der Fall.
Glücklicherweise gibt es ein plugin bereits erstellt moment genannt "Die Genaue Reichweite", die das richtige tut. Blick auf die Quelle, es macht etwas ähnliches zu torazaburo Antwort - aber richtig Konten für die Anzahl der Tage im Monat einstellen.
Nachdem Sie beide moment.js und dieses plugin (readable-range.js) in Ihrem Projekt, können Sie einfach rufen Sie es wie folgt:
Ist die Ausgabe "1 Jahr 1 Monat 14 Tage"
startOf('month')
rufen Sie vorpreciseDiff
.moment-precise-range.js
. Das Rückgabe-Objekt war der Bau einer Zeichenfolge, die ich gerade bereinigt den string als mein pro braucht, und es geschieht. 🙂Du kaum brauchen, moment.
Dieser nutzt die Tatsache, dass die
Date
Konstruktor ist smart über negative Werte. Zum Beispiel, wenn die Anzahl der Monate negativ ist, wird es dauern, die Rechnung und gehen Sie zurück in das Jahr.Deine Berechnung ist falsch-es geht nicht, 14 Tage, es sind sechs verbleibenden Tage im Februar und den ersten fünf Tagen des April, es ist also 11 Tage, wie der computer korrekt berechnet.
Zweiten Versuch
Diese möglicherweise besser gegeben @MattJohnson Kommentar:
Date
Objekt die Möglichkeit, zu Fuß aus der Reichweite. Es gibt jedoch ein paar Probleme mit seinem Konzept. 1) DieDate
Objekt übernimmt DST Verhalten der lokalen Zeitzone, die neigen, bestimmte Ergebnisse, und 2) Es nicht handhaben die ganzen Monate gut. Prüfen, Jan 1 - 1. Juli. Statt "6 Monate", es gibt "5 Monate und 30 Tage". 3) Selbst dann funktioniert es nicht gut mit den Schaltjahren. Jan 1 - Mär 1 gibt immer "1 Monat und 28 Tage", auch wenn es ein Schaltjahr ist - soweit technisch sollte es "1 Monat und 29 Tagen".Dieser arbeitete für mich. Verifiziert mit dem Alter Taschenrechner.