2010-04-13 62 views
22

我用下面的函数,为什么javascript getTime()不是函数?

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

我得到的错误dat1.getTime()不是函数....

回答

31

那是因为你的dat1dat2变量只是字符串。

你应该分析他们获得Date对象,该格式我总是用下面的函数:

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

我使用此功能,因为Date.parse(string)(或new Date(string))方法是实现相关yyyy-MM-dd格式将在现代浏览器上运行,但在IE上的而不是,所以我宁愿手动执行此操作。

3

dat1和dat2是JavaScript中的字符串。 String原型上没有getTime函数。我相信你想要的Date.parse()函数:http://www.w3schools.com/jsref/jsref_parse.asp

你会使用这样的:

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

我woud说,这应该是'VAR日期=新的日期(Date.parse(DAT1) );' – Hexodus 2018-01-16 16:37:29