我试图计算给定日期的时间戳(小时和分钟现在并不重要)。
我不是在计算两个日期之间的计算天数,但作为计算时间戳问题的一个示例,让我们看看下面的代码片段,它计算两个日期之间的天数:
console.log(((new Date(2017,2,10)).getTime() - (new Date(2017,1,31)).getTime())/86400000);
这个片段打印7对我而言,如果我正确地做了数学,它实际上应该打印10。 我知道我的代码有问题,但我不知道它是什么。
答案 0 :(得分:2)
Date
构造函数中的月份为0索引,因此0表示1月,1表示2月等,而且参数可能溢出(new Date(2017,11,32)
实际上是
Mon Jan 01 2018 00:00:00
)。因此,在您的示例中,日期实际上是:
new Date(2017,1,31)
Fri Mar 03 2017 00:00:00
new Date(2017,2,10)
Fri Mar 10 2017 00:00:00
因此结果是正确的。
答案 1 :(得分:1)
您的代码中返回的值绝对没问题。根据{{1}},对于函数中的$(document).ready(function() {
$("ul li div").click(function(){
alert ($(this).parent().index()+1);
});
});
参数,您可以传递以下允许值,否则会自动调整它们 -
表示月份的整数值,从1月的0开始到12月的11。
因此,在您的情况下,由于Javascript MDN Documentation
不存在,因此会自动调整Date对象并使用值Month
进行初始化。另一个日期初始化为31 February 2017
。因此,差异正在变为7天。以下是关于MDN文档调整的简短说明 -
如果将Date作为具有多个参数的构造函数调用,如果值大于其逻辑范围(例如,13为月值或70为分钟值),则将调整相邻值。例如。新日期(2013,13,1)相当于新日期(2014,1,1),均创建2014-02-01的日期(请注意,该月份为0)。类似地,对于其他值:新日期(2013,2,1,0,70)等同于新日期(2013,2,1,1,10),它们都创建2013-03-01T01:10:00的日期。