2015-04-16 21 views
6

Ich möchte die Tage bis zu einem bestimmten Ereignis mit momentjs herunterzählen, aber ich bekomme ein unerwartetes Ergebnis.Berechne die Tage bis zu einem bestimmten Datum mit momentjs

Mit dem heutigen Datum am 17. April und dem Datum des Ereignisses am 14. Mai möchte ich, dass die resultierende Anzahl von Tagen 27 ist, aber mein Code gibt mir ein Ergebnis von 57. Was ist los?

function daysRemaining() { 
    var eventdate = moment([2015, 5, 14]); 
    var todaysdate = moment(); 
    return eventdate.diff(todaysdate, 'days'); 
} 
alert(daysRemaining()); 
+1

analysieren Wenn Sie 'console.log laufen (eventdate.format());', es gibt '" 2015-06-14T00: 00: 00-04: 00 "' zurück. –

Antwort

9

Beim Erstellen eines Momentenobjekts mit einem Array müssen Sie beachten, dass alle Monate, Stunden, Minuten, Sekunden und Millisekunden nullindiziert sind. Jahre und Tage des Monats sind 1 indiziert. Dies dient dazu, die nativen Date Parameter zu spiegeln.

Reference

Also entweder den Monat bis 4 ändern Mai zu reflektieren oder das Datum als ISO 8601 string

function daysRemaining() { 
    var eventdate = moment("2015-05-14"); 
    var todaysdate = moment(); 
    return eventdate.diff(todaysdate, 'days'); 
} 
alert(daysRemaining()); 
3

Das liegt daran, Monate sind Null indexiert. Also 5 ist eigentlich Juni;)

+0

Ok, das war nicht die Antwort, die ich erwartet hatte! Was ist mit Tag und Jahr? –

+1

[Referenz] (http://momentjs.com/docs/#/parsing/array/) - "Da dies die nativen Date-Parameter widerspiegelt, sind Monate, Stunden, Minuten, Sekunden und Millisekunden alle null indiziert. Jahre und Tage des Monats sind 1 indiziert. " –

Verwandte Themen