javascript - 为什么这个日期操作(两个日期之间的天数)返回这个值?

标签 javascript date

根据this问题,我写了“我的代码”(没有Math.abs,我不需要它):

var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date("2011", "09", "28"); // 28 september 2011
var secondDate = new Date("2011", "09", "30"); // 30 september 2011

var notti = ((secondDate.getTime() - firstDate.getTime()) / (oneDay));
if (notti < 1)
    notti = 1;
else
    notti = Math.round(notti);

alert(notti);

并打印 2(正确)。

现在,如果我这样做:

var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date("2011", "09", "28"); // 28 september 2011
var secondDate = new Date("2011", "10", "01"); // 01 october 2011

var notti = ((secondDate.getTime() - firstDate.getTime()) / (oneDay));
if (notti < 1)
    notti = 1;
else
    notti = Math.round(notti);

alert(notti);

它打印 4。为什么是 4?应该是3... 你知道这个问题吗?

最佳答案

日期构造函数(和其他日期方法)中的月份参数从 [0.11] 而不是 [1..12] 开始,因此:

new Date("2011", "09", "28"); // 28 september 2011

实际上是10 月 28 日星期五,而不是 9 月。

关于javascript - 为什么这个日期操作(两个日期之间的天数)返回这个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7571977/

相关文章:

Java:以毫秒为单位的时间到 HTTP 格式?

javascript - 函数与对象构造函数

Java 日历/日期 : AM and PM not setting correctly

r - R中的3个字母月份和2位数字年份格式

javascript - 检查单选按钮组是否已被选择

c# - 两个 DateTimes C# 之间的区别?

ruby-on-rails - 将日期范围转换为周和月数组

javascript - Cordova:在 config.xml 中使用环境变量

javascript - 单击时清除 Javascript 中的表单字段

javascript - 动态按钮 JavaScript