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?

1
asifa 6 Okt. 2012 im 12:34

4 Antworten

Beste Antwort

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]);
0
Guffa 6 Okt. 2012 im 09:04

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.

0
yoku2010 6 Okt. 2012 im 09:01

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

0
Jacob George 6 Okt. 2012 im 09:50

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.

0
Mr. 14 6 Okt. 2012 im 08:52