Konvertieren Sie die Anzahl der Tage in Jahre, Monate, Tage
Habe ich zwei Datum-Pflücker, die berechnet die Anzahl von Tagen zwischen zwei Datumsangaben. Im moment bin ich die Ausgabe der Anzahl der Tage (siehe code unten) das ist irgendwie sinnlos. Ich möchte die Ausgabe, die Zahl in Jahren, Monaten, Tagen. Wie kann ich das tun?
E. g, So 01/01/14 bis 01/02/15 = 397 Tage, die wird dann 1 Jahr(E), 1 Monat(en), 1 Tag(E)
var diff = endDate - startDate;
dayCount = diff / ( 60 * 60 * 24 * 1000 ); //secs * mins * hours * milliseconds
dayCount = Math.round( dayCount ) + this.options.countAdjust;
return dayCount;
- wie die F-es bezieht sich auf die Frage ?
prettyDate("2008-01-14T22:24:17Z") // => "2 weeks ago"
- Huch, ich habe missverstanden. Vielen Dank für den Hinweis.
- Wie es ist 1 Monat ????? es ist 0 Monat ! (M/d/y)
- Die meisten Nutzer verwenden die standard-d/m/y format Royi
- so sollte der Tag 0, dann !
- Ja, es ist wahrscheinlich ein Tippfehler
- mögliche Duplikate von Wie berechnen Datum Unterschied in javascript
- Nein. schaue die Werte in der dup. es ist nicht richtig
- sorry habe ich nicht bekommen, Sie, welche Werte Sie sich beziehen?
- Jut führen Sie den code. ( in der dups) - nicht diejenigen, die mit Bibliothek
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie haben einen Fehler in deiner Berechnung :
es ist 0 Monat.
Und wenn du meinst, d/m/y, dann
1 year, 1 month, and 0 day old.
sagte Sie zwischen den beiden Daten ( nicht enthalten) - schauen Sie hier
Sowieso hier ist der richtige code, die gehören eigentlich zählen jeden Monat wie viele Tage hat es ! ( Schaltjahr berücksichtigen):
Hinweis :
Ich instanziiert es als d/m/yyy. fühlen Sie sich frei, zu senden, die richtigen Muster in :
alert(getAge( new Date(2014,0,1),new Date(2015,0,2)))
JS:
date2.setUTCHours(0,0,0,0)
. Die DaysInMonth - Funktion ist unnötig Komplex (gib die Anzahl Tage im angegebenen Monat).getUTCMonth()
undgetMonth()
es muss Hinzugefügt werden, indem+1
es richtig zu machen, da es gezählt wird als index aus0(jan) to 11(dec)
.var date2_UTC = new Date(Date.UTC(date_2.getUTCFullYear(), date_2.getUTCMonth(), date_2.getUTCDate()));
ist identisch mitvar date2_UTC = new Date(date_2); date2_UTC.setUTCHours(0,0,0,0)
. Beide erstellen eine "Kopie" des ursprünglichen Datums mit der UTC-Zeit 00:00:00.000, aber man ist viel weniger code.Können Sie den link unten dargestellt wird , hat es mehr ausführliche Erklärung. JSFIDDLE Die detaillierte code -
Link
Diese wurde mehrfach beantwortet befoore: Siehe https://stackoverflow.com/a/17733753/550198
Können Sie ändern Sie die folgende Methode ganz einfach für Ihre Zwecke anpassen:
Tue Jun 01 2010 was 1584 days 51 months 4 years ago
. aber er will die Erinnerungen, die in jedem Teil ! nicht die übersetzung zu jeder Zeit-Abschnitt !Wenn Sie möchten, zu bekommen, das Jahr und der Monat zwischen zwei Datum:
Dies wird Ihnen die Differenz zwischen zwei Datumsangaben in Millisekunden
In deinem Beispiel, wäre es
Müssen Sie sicherstellen, dass compareDate ist ein gültiges Date-Objekt.
Etwas wie dies wahrscheinlich für Sie arbeiten
d.h. das drehen "2011-02-07 15:13:06" in neue Datum('2011/02/07 15:13:06'), das ist ein format das Datum Konstruktor begreifen können.
Antwort Referenz