javascript Datum subtrahieren
Ich bin auf der Suche nach einem Weg zu tun, die richtige Subtraktion zwischen zwei javascript-Date-Objekte und Holen Sie sich die Tag-delta.
Dies ist mein Ansatz, aber es funktioniert nicht für das heutige Datum als Eingabe:
<script type="text/javascript">
function getDayDelta(incomingYear,incomingMonth,incomingDay){
var incomingDate = new Date(incomingYear,incomingMonth,incomingDay);
var today = new Date();
var delta = incomingDate - today;
var resultDate = new Date(delta);
return resultDate.getDate();
}
//works for the future dates:
alert(getDayDelta(2009,9,10));
alert(getDayDelta(2009,8,19));
//fails for the today as input, as expected 0 delta,instead gives 31:
alert(getDayDelta(2009,8,18));
</script>
Was wäre ein besserer Ansatz für diese ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Nummer des Monats im Date-Konstruktor-Funktion ist null-basiert, sollten Sie sich subtrahieren, und ich denke, das ist einfacher zu berechnen Sie das delta mit dem timestamp:
today
umfasst die Zeit, siehe mein edit...incomingDate
hat einer mal den Teil von 0 Stunden, 0 Minuten, 0 Sekunden und 0 Millisekunden. Sie haben das gleiche zu tun, umtoday
oder Sie bekommen teilweise Tage, einen Tag vor/hinter sich. Ich habe bearbeitet die Antwort, um die änderung widerzuspiegeln.(2009,8,18) ist NICHT 18. August. Es ist September 18th.
Könnten Sie call getTime() für jedes date-Objekt, und subtrahieren dann die späteren von den früheren. Dies würde Ihnen die Anzahl der Millisekunden, die Differenz zwischen den zwei Objekten. Von dort aus ist es leicht, zu Tage.
Ein paar Problemchen zu gucken, obwohl: 1) die Sommerzeit, und 2) sicherzustellen, dass Ihre Zeiten kommen aus der gleichen Zeitzone.
Dieser besser funktionieren wird, aber es funktioniert nicht richtig umzugehen, wobei das Ergebnis negativ Werte. Möglicherweise möchten Sie einfach analysieren die Werte selbst und mit Ihnen umzugehen.