Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 随月份变化的两个日期之间的差异_Javascript_Date_Difference - Fatal编程技术网

Javascript 随月份变化的两个日期之间的差异

Javascript 随月份变化的两个日期之间的差异,javascript,date,difference,Javascript,Date,Difference,以下代码以天为单位获取差异: var sDate = new Date('2014','08','30','0','0','0'); var eDate = new Date('2014','09','02','0','0','0'); var daysApart = Math.abs(Math.round((sDate-eDate)/86400000)); 结果是2。但如果我使用这些日期: var sDate = new Date('2014','08','25','0','0','0')

以下代码以天为单位获取差异:

var sDate = new Date('2014','08','30','0','0','0');
var eDate = new Date('2014','09','02','0','0','0');

var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));
结果是2。但如果我使用这些日期:

var sDate = new Date('2014','08','25','0','0','0');
var eDate = new Date('2014','08','29','0','0','0');

var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));
结果是3

这两个日期都应该是3,但每次我切换月份时,函数都会忽略一个月的第一个。我试了一下

var sDate = new Date('2014','08','31','0','0','0');
var eDate = new Date('2014','09','01','0','0','0');

但结果是0。我在StackOverflow和Google Groups上搜索了很多,但找不到解决方案。任何帮助都会很好

了解日期对象的时间到了

来自MDN:

构造函数:

新日期(年、月、日、时、分、秒、毫秒)

表示月份的整数值,1月从0开始,12月从11开始

运行一个简单的测试,查看输出的内容:

console.log(new Date(2014,8,1,0,0,0));
console.log(new Date(2014,9,1,0,0,0));
那么现在你的情况如何

var sDate = new Date('2014','08','31','0','0','0');  
首先,它们应该是整数而不是字符串


你说的是第8个月,也就是9月,因为我们是零基的。由于9月份没有31天,浏览器不会抛出错误。它计算出一天会是什么样子。因此,它将其更改为10月1日。

有一天,有人决定该月将以零为基准,你认为你创建了“8月30日”,而实际上你创建了“9月30日”。在第二个例子中,你要求的是9月31日,但这并不存在,所以你得到的是9月30日


是的,这相当迟钝。

九月没有31天。但是八月有31天。天哪!jan=0…多么愚蠢…太棒了,谢谢!这真是令人困惑,我希望他们将来能改变这一点。