2010-04-13 12 views
22

tôi đã sử dụng các chức năng sau đây,Tại sao javascript getTime() không phải là một hàm?

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); 
} 

tôi nhận được lỗi dat1.getTime() không phải là một chức năng ....

Trả lời

31

Đó là bởi vì dat1dat2 bạn biến chỉ là chuỗi.

Bạn nên phân tích chúng để có được một đối tượng Date, cho định dạng mà tôi luôn luôn sử dụng các chức năng sau:

// 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 
} 

tôi sử dụng chức năng này vì phương pháp Date.parse(string) (hoặc new Date(string)) là thực hiện phụ thuộc, và định dạng yyyy-MM-dd sẽ hoạt động trên trình duyệt hiện đại nhưng không phải là trên IE, vì vậy tôi thích thực hiện theo cách thủ công.

9

Để sử dụng chức năng này/phương pháp, bạn cần một thể hiện của lớp ngày.

Phương pháp này luôn được sử dụng cùng với đối tượng ngày.

Xem mã bên dưới:

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

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

3

dat1 và dat2 là các chuỗi trong JavaScript. Không có hàm getTime trên nguyên mẫu String. Tôi tin rằng bạn muốn Date.parse() chức năng: http://www.w3schools.com/jsref/jsref_parse.asp

Bạn sẽ sử dụng nó như thế này:

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

Tôi woud nói rằng nó nên được 'ngày var = new Date (Date.parse (dat1)); ' – Hexodus