以整数值计算日期差异

时间:2012-02-14 10:13:04

标签: javascript jquery

我有两个日期字段,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。 但我无法给予差异化的贡献?有人能指出原因吗?

3 个答案:

答案 0 :(得分:2)

我认为你没有有效的约会。看看这一行:

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

这就像写作

new Date(2012,9,'feb')

10-feb-2012,无效。 The date constructor takes arguments like this:

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

如果所有参数都是整数('feb'无效,那么你也是以错误的顺序传递参数。)

所以我认为您需要查看parseDate方法。

这是假设JQuery不会改变Date对象的工作方式 - 您可能需要检查它。

你应该使用像Firebug这样的javascript控制台来帮助你调试。

答案 1 :(得分:1)

您可以使用date.getTime()来检查差异

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

请检查Date对象创建参数

new Date(year,month,day);

答案 2 :(得分:1)

您可以尝试使用date.js,这是一个小而精彩的JS库,仅用于处理日期。它规范了跨浏览器的Date对象,并提供了各种用于处理日期的含糖方法:)

也可以与jQuery一起使用

修改

date.js使日期工作变得不那么痛苦,但并不重要,你需要的一切都可以在纯JS中完成。

其他回答者 - 实际上,JavaScript中的Date构造函数可以接受单个字符串作为参数,它用于生成新的Date对象。

我根据您的示例代码制作了fiddle,其中显示了如何计算两个日期之间的天数。看看并玩游戏,它可能是你需要的:))