2010-12-07 6 views
0
// How many days between two dates 
function gDaysBetweenDates(date1, date2) { 

    var date1_ms = date1.getTime(); 
    var date2_ms = date2.getTime(); 


    return Math.round(Math.abs(date1_ms - date2_ms)/(1000 * 60 * 60 * 24)); 

} 

Date1 und date2 weitergegeben werden sind Date-Objekte mit Werten wie:Javascript-Funktion nicht definiert

Di 9. März 2010 00:00:00 GMT + 0000 (GMT Standard Time)

Ich bekomme ein Problem beim Versuch, die Zeit zu extrahieren, es sagt, getTime ist undefiniert. Wenn ich ein neues Date-Objekt mit den Daten versuchen und schaffen übergeben über: in einem ungültigen Format

var dateNew = new Date(date1); 

ich den Fehler, ist Datum.

+0

'neues Datum ('Di Mar 09 2010 00:00:00 GMT + 0000 (GMT Standardzeit)');' funktioniert. Überprüfen Sie, ob die übergebenen Werte nicht "undefiniert" sind ("alert" sie innerhalb von "gDaysBetweenDates"). – Matt

+0

Ich vermute, dass diese Werte * nicht * sind. Date-Instanzen ... – Pointy

+0

Wie die Datumszeichenfolge generiert wird ? Kontrollierst du sein Format? –

Antwort

1

Für das letzte Problem, run date1.constructor, um zu sehen, welche Art von Objekt date1 ist. Wenn es eine Nummer ist, sollte es funktionieren, wie Sie es geschrieben haben. Wenn es eine Zeichenfolge ist, müssen Sie sicherstellen, dass es als Datum formatiert ist. Wenn es sich um etwas anderes als Zahl oder Zeichenfolge handelt, haben Sie einen ungültigen Typ.

Vergewissern Sie sich auch, dass date1 nicht null ist.

0

Sie scheinen einige Typenprobleme zu haben. Der Date-Konstruktor akzeptiert nur Millisekunden-Zahlen oder Datumszeichenfolgen, kein Datumsobjekt. Der andere Fehler klingt, als ob Sie denken, dass etwas ein Date-Objekt ist, was in Wirklichkeit nicht der Fall ist. (null? eine Zeichenkette?)