Javascript 以整数值计算日期差

Javascript 以整数值计算日期差,javascript,jquery,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((seco

我有两个日期字段,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。
但我不能给得到的区别?有人能指出原因吗?

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

function daydiff(first, second) {
 return Math.floor((second.getTime()-first.getTime())/(1000*60*60*24));
}
请检查日期对象创建参数

new Date(year,month,day);

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

function daydiff(first, second) {
 return Math.floor((second.getTime()-first.getTime())/(1000*60*60*24));
}
请检查日期对象创建参数

new Date(year,month,day);

我想你没有有效的日期。请看这一行:

new Date(mdy[2], mdy[0]-1, mdy[1])
这就像写作

new Date(2012,9,'feb')
适用于2012年2月10日,无效

如果所有参数都是整数,则“feb”无效,并且您以错误的顺序传递参数

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

这都是假设JQuery不会改变Date对象的工作方式——您可能需要对此进行检查


您应该使用firefox Firebug之类的javascript控制台来帮助调试。

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

new Date(mdy[2], mdy[0]-1, mdy[1])
这就像写作

new Date(2012,9,'feb')
适用于2012年2月10日,无效

如果所有参数都是整数,则“feb”无效,并且您以错误的顺序传递参数

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

这都是假设JQuery不会改变Date对象的工作方式——您可能需要对此进行检查

您应该使用firefox的Firebug这样的javascript控制台来帮助您进行调试。

您可以尝试使用一个小但非常棒的JS库来处理日期。它使浏览器中的日期对象正常化,并提供各种处理日期的甜蜜方法:

也可以与jQuery一起使用

编辑

js使处理日期变得不那么痛苦,但这并不是必需的,您需要的一切都可以在纯js中完成

其他回答者——实际上,JavaScript中的日期构造函数可以接受单个字符串作为参数,并使用该字符串生成新的日期对象

我根据您的示例代码做了一个示例,演示了如何计算两个日期之间的天数。看一看,玩一玩,它可能就是你所需要的:

你可以尝试使用,一个小但很棒的JS库,只用于处理日期。它使浏览器中的日期对象正常化,并提供各种处理日期的甜蜜方法:

也可以与jQuery一起使用

编辑

js使处理日期变得不那么痛苦,但这并不是必需的,您需要的一切都可以在纯js中完成

其他回答者——实际上,JavaScript中的日期构造函数可以接受单个字符串作为参数,并使用该字符串生成新的日期对象


我根据您的示例代码做了一个示例,演示了如何计算两个日期之间的天数。看一看,玩一玩,它可能就是你需要的:

second.getTime-first.getTime==second-firstvar monthNames=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月'];函数parseDatestr{var mdy=str.split'-';返回新的Datemdy[2],monthNames.indexOfmdy[1],mdy[0];}second.getTime-first.getTime==second-firstvar-monthNames=['Jan',Feb',Mar Apr',May',Jun',Jul',Aug',Sep',Oct',Nov',Dec'];函数parseDatestr{var mdy=str.split'-';返回新的Datemdy[2],monthNames.indexOfmdy[1],mdy[0];}可能是这种情况。但是在jquery datepicker中,日期格式是date month year,即2011年2月10日。@Cyphon这很好,但是如果您想使用date,这是一个股票javascript对象,您需要以正确的顺序和格式为它提供参数。我已将格式更改为2012年9月2日。但它仍然不起作用,也许是这样。但是在jquery datepicker中,日期格式是date month year,即2011年2月10日。@Cyphon这很好,但是如果您想使用date,这是一个股票javascript对象,您需要以正确的顺序和格式为它提供参数。我已将格式更改为2012年9月2日。但是它仍然不起作用除了使用date.js之外,没有其他方法可以找到日期差异吗?谢谢你的努力。我真的很感激。但不幸的是,对我来说,这一切都不起作用。可能是因为我使用了日期选择。现在越来越痛了。再次感谢。我没有使用date.js,因为我需要从另一个js调用它,这将是另一个混乱。除了使用date.js,没有其他方法可以找到日期差异吗?谢谢你的努力。我真的很感激。但不幸的是,对我来说,这一切都不起作用。可能是因为我使用了日期选择。现在越来越痛了。再次感谢。我没有使用date.js,因为我需要从另一个js调用它,这将是另一个混乱。