Ich möchte die Anzahl der Tage zwischen dem angegebenen Datum und dem aktuellen Datum berechnen. Ich verwende das folgende Javascript, erhalte aber falsche Ergebnisse.
function getcabin(saildates) {
var d = new Date();
var month = d.getMonth()+1;
var day = d.getDate();
var output = d.getFullYear() + '-' + month + '-' + day;
alert(daydiff(parseDate(output), parseDate(saildates)));
}
function parseDate(str) {
var mdy = str.split('-')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
function daydiff(first, second) {
return (second-first)/(1000*60*60*24)
}
Kann jemand bitte auf den Fehler hinweisen oder wie es geht?
4 Antworten
Hier verwenden Sie das Format yyyy-mm-dd
:
var output = d.getFullYear() + '-' + month + '-' + day;
Hier analysieren Sie es als mm-dd-yyyy
:
return new Date(mdy[2], mdy[0]-1, mdy[1]);
So formatieren Sie das Datum so, dass es für den Parser passt:
var output = month + '-' + day + '-' d.getFullYear();
Wenn Sie es als yyyy-mm-dd
analysieren möchten:
return new Date(mdy[0], mdy[1]-1, mdy[2]);
In Ihrem Code ist ein Fehler beim Übergeben von Parametern in der neuen Datumsfunktion aufgetreten.
Die Syntax lautet:
new Date(year,month,day[,hour,minute,second,millisecond]);
Geänderter Code:
function getcabin(saildates)
{
var d = new Date();
var month = d.getMonth()+1;
var day = d.getDate();
var output = d.getFullYear() + '-' + month + '-' + day;
alert(daydiff(parseDate(output), parseDate(saildates)));
}
function parseDate(str)
{
var mdy = str.split('-')
return new Date(mdy[0], mdy[1]-1, mdy[2]);
}
function daydiff(first, second) {
return (second-first)/(1000*60*60*24)
}
getcabin("2012-10-8")
Dadurch wird der korrekte Tageswert angezeigt.
Sie könnten diese Funktion ausprobieren
function getDayDiff(date) {
return parseInt(((new Date()) - date)/(1000*60*60*24))
}
Wenn Sie also versuchen, den Tagesunterschied zum ersten Tag des Jahres zu ermitteln
getDayDiff(new Date(2012,0,1))
Sie erhalten das Ergebnis als 279
Tage
Die Syntax für neues Datum lautet
neues Datum (Jahr, Monat, Tag [, Stunde, Minute, Sekunde, Millisekunde])
Eine Seite davon: Sie addieren 1 zu Monat in getcabin, aber -1 zu Jahr in parseDate.