jQuery:time函数输出错误的天数

jQuery:time函数输出错误的天数,jquery,date,Jquery,Date,我需要计算两个日期之间的日差,我的代码有问题。例如,目标日期包含在输入字段(id=“targetdate”)中,格式为dd/mm/yyyy: 2014年2月9日 我有以下代码: targetdate = $('#targetdate').val(); // the format is "dd/mm/yyyy", so I need to write the following extra code: var day = targetdate.substring

我需要计算两个日期之间的日差,我的代码有问题。例如,目标日期包含在输入字段(id=“targetdate”)中,格式为dd/mm/yyyy

2014年2月9日

我有以下代码:

targetdate = $('#targetdate').val();

// the format is "dd/mm/yyyy", so I need to write the following extra code:                 
var day = targetdate.substring(0,2);
var month = targetdate.substring(3,5);
var year = targetdate.substring(6,10);          

// Calculation difference of days
var oneDay = 24*60*60*1000;  // hours*minutes*seconds*milliseconds
var endDate = new Date(year,month,day);
var today = new Date();
var diffDays = (Math.round(Math.abs((endDate.getTime() - today.getTime())/(oneDay))));
我在代码中得到了错误的结果:

  • 如果结束日期是今天,我得到“27”
  • 如果结束日期是明天,我得到“28”
  • 如果结束日期是后天,我得到“29”

问题出在哪里?

在构造
日期
实例时,一月的“月”值以零开始,因此:

var endDate = new Date(year,month-1,day);
// You need to remove one -------^^
还请注意,您应该分析这些字符串,例如:

var day = parseInt(targetdate.substring(0,2), 10);
var month = parseInt(targetdate.substring(3,5), 10);
var year = parseInt(targetdate.substring(6,10), 10);

thanx,我做了你建议的更改,但现在我得到了以下错误结果:如果enddate等于今天,我得到“1”;如果enddate是明天,我得到“0”;如果enddate是tmrw之后的第二天,我得到“1”。。。。这是怎么发生的?看起来您缺少了一个1(
enddate==today
为您提供了1而不是-1,因为
Math.abs
)还有,parseInt中基数的
+1
。永远是个讨厌鬼。@KentMiller你需要将今天的时间部分设为0。永远不要加24*60*60*1000来获得下一天/前一天!在大多数时区,每年工作363天都很好,但当DST开始或结束时,可能会产生大问题!