Javascript 使用JS问题获取两个日期之间的差异

Javascript 使用JS问题获取两个日期之间的差异,javascript,date,Javascript,Date,有一个非常奇怪的问题,我无法确定。我尝试了一些不同的变体来获取JS中两个日期之间的天数。在大多数情况下(99%的情况下),下面的方法很有效,但我得到了一些不正确的结果**有时当我跨越几个月的时候。例如,如果我得到2015年7月31日到2015年8月1日之间的天数,它将正确返回1。然而,如果我试图获取2015年6月30日至2015年7月1日之间的天数,我得到的结果是2天(6月只有30天,我已仔细检查)。这是我的服务器环境造成的还是我疯了 start_date = new Date(start);

有一个非常奇怪的问题,我无法确定。我尝试了一些不同的变体来获取JS中两个日期之间的天数。在大多数情况下(99%的情况下),下面的方法很有效,但我得到了一些不正确的结果**有时当我跨越几个月的时候。例如,如果我得到2015年7月31日到2015年8月1日之间的天数,它将正确返回1。然而,如果我试图获取2015年6月30日至2015年7月1日之间的天数,我得到的结果是2天(6月只有30天,我已仔细检查)。这是我的服务器环境造成的还是我疯了

start_date = new Date(start); // assuming the format is correct
end_date = new Date(ends); // assuming the format is correct
diff_ms = end_date.getTime() - start_date.getTime(); 
var days = diff_ms / 86400000;
我还尝试了以下方法,得到了完全相同的结果:

start_date = new Date(start); // assuming the format is correct
end_date = new Date(ends); // assuming the format is correct
var timeDiff = Math.abs(end_date.getTime() - start_date.getTime());
var days = Math.ceil(timeDiff / (1000 * 3600 * 24)); 

谢谢@Pointy&@Rodrigo,你们两个都把我带到了这个问题上。我知道月份从零开始,但我错误地编写了初始脚本,从**天减去了一天,而不是从**月减去了一天。应该是:

from = jQuery("#from").val().split("-");
start = new Date(from[2], from[0] - 1, from[1]);
to = jQuery("#to").val().split("-");
ends = new Date(to[2], to[0] - 1, to[1]);

谢谢你的帮助

当你得到奇怪的答案时,你的起始字符串是什么样子的?我得到
1
var d1=新日期(2015,05,30);var d2=新日期(2015年6月1日);(d2-d1)/86400000。您可以先假定格式不正确。显示实际输入的示例。假设一天正好有24小时也是有点危险的;这并不总是正确的(比如夏令时)。谢谢你的快速回答。日期是从变更输入中提取的。输入格式为mm dd yyyy,下面是脚本的第一部分:
from=jQuery(“#from”).val().split(“-”);开始=新日期(从[2],从[0],从[1]-1);to=jQuery(“#to”).val().split(“-”);结束=新日期(到[2],到[0],到[1]-1)可能重复的