我有两个ID为gp_vdate_from和gp_vdate_to的日期字段。我有一个隐藏的div,它由动态表填充。输入日期字段后,单击按钮即可看到div。我做了这样的事情来计算日期差

function parseDate(str) {
var mdy = str.split('-')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}

function daydiff(first, second) {
return Math.floor((second-first)/(1000*60*60*24))
}

var diff=(daydiff(parseDate($('#gp_vdate_from').val()), parseDate($('#gp_vdate_to').val())));


输入的日期格式为10-2-2012。
但是我不能给与别人不同吗?有人可以指出原因吗?

最佳答案

我认为您没有有效的日期。看这行:

new Date(mdy[2], mdy[0]-1, mdy[1])


这就像写作

new Date(2012,9,'feb')


适用于2012年2月10日,无效。 The date constructor takes arguments like this:

new Date(year, month, day [, hour, minute, second, millisecond ]);


如果所有参数都是整数(“ feb”无效,那么您传递的参数顺序也不正确)。

因此,我认为您需要查看您的parseDate方法。

所有这些都假定JQuery不会更改Date对象的工作方式-您可能需要检查一下。

您应该使用诸如Firebug的JavaScript控制台进行firefox调试。

10-02 17:23