2010-04-13 11 views
22

ich die folgende Funktion verwendet,Warum JavaScript getTime() ist keine Funktion?

function datediff() 
{ 
var dat1 = document.getElementById('date1').value; 
alert(dat1);//i get 2010-04-01 
var dat2 = document.getElementById('date2').value; 
alert(dat2);// i get 2010-04-13 

var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds 
var diffDays = Math.abs((dat1.getTime() - dat2.getTime())/(oneDay)); 
alert(diffDays); 
} 

i den Fehler dat1.getTime() keine Funktion ist ....

Antwort

31

Das ist, weil Ihr dat1 und dat2 Variablen nur Strings sind.

Sie sollten sie analysieren ein Date-Objekt zu erhalten, für das Format habe ich immer die folgende Funktion verwenden:

// parse a date in yyyy-mm-dd format 
function parseDate(input) { 
    var parts = input.match(/(\d+)/g); 
    // new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]]) 
    return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based 
} 

Ich benutze diese Funktion, weil die Date.parse(string) (oder new Date(string)) Methode Umsetzung abhängig ist, und das yyyy-MM-dd Format wird auf modernen Browser funktionieren, aber nicht auf IE, also bevorzuge ich es manuell zu tun.

9

diese Funktion/Methode zu verwenden, müssen Sie eine Instanz der Klasse Datum.

Diese Methode wird immer in Verbindung mit einem Datum Objekt verwendet.

Sehen Sie den Code unten:

var d = new Date(); 
d.getTime(); 

-Link: http://www.w3schools.com/jsref/jsref_getTime.asp

3

dat1 und dat2 sind Strings in JavaScript. Es gibt keine getTime-Funktion für den String-Prototyp. Ich glaube, dass Sie die Date.parse() Funktion wollen: http://www.w3schools.com/jsref/jsref_parse.asp

Sie würde es so verwenden:

var date = Date.parse(dat1); 
+0

ich woud sagen, dass es sein sollte 'var date = new Date (Date.parse (DAT1)); ' – Hexodus