Javascript Date.getTime 函数没有返回正确的值,或者我做错了什么
Javascript Date.getTime function doesn't return the correct value or I'm doing something wrong
我正在尝试计算给定日期的时间戳(小时和分钟现在并不重要)。
我不是在寻找计算两个日期之间的天数,但作为计算时间戳问题的示例,让我们看一下以下代码片段,该代码片段计算两个日期之间的天数:
console.log(((new Date(2017,2,10)).getTime() - (new Date(2017,1,31)).getTime())/86400000);
这个片段为我打印 7,而如果我正确计算,它实际上应该打印 10 .我知道我的代码有问题,但我不知道是什么。
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
因此,结果是正确的。
代码中返回的值绝对没问题。根据Javascript MDN Documentation
,对于函数中的Month
参数,可以传递以下允许值,否则会自动调整-
表示月份的整数值,从 0 表示 1 月开始,到 11 表示 12 月。
因此,在您的情况下,由于 31 February 2017
不存在,Date 对象会自动调整并使用值 03 March 2017
进行初始化。另一个日期初始化为值 10 March 2017
。因此,差异正确为 7 天。以下是 MDN 文档中关于调整的简短说明-
其中 Date 作为具有多个参数的构造函数调用,如果值大于其逻辑范围(例如,提供 13 作为月份值或 70 作为分钟值),则将调整相邻值。 例如,new Date(2013, 13, 1) 等效于 new Date(2014, 1, 1),两者都为 2014-02-01 创建一个日期(请注意,月份是从 0 开始的)。对于其他值也是如此:new Date(2013, 2, 1, 0, 70) 等效于 new Date(2013, 2, 1, 1, 10),两者都为 2013-03-01T01:10:00 创建一个日期。
- javascript或缓存错误?或者其他什么
- 闭包中的本地变量从外部更改.这是一个javascript错误,或者我做错了什么
- jQuery noConflict,或者什么
- Javascript Date.getTime 函数没有返回正确的值,或者我做错了什么
- 什么's在Android中更快:使用loadUrl将数据发送到WebView,或者使用JavascriptInt
- 在JavaScript中,换行符实际上并不是在创建新行,有没有其他选择,或者我做错了什么
- javascript+jquery检查元素是否存在,然后设置其值,或者其他什么
- 我是否错误地使用了eq(…)?或者这里出了什么问题
- 如何访问变量而不是重新声明它?或者还有什么替代方法
- 这真的是异步的吗?或者它发生得太快了,没有什么区别
- 如何知道什么时候所有的承诺都被拒绝了,或者用基本的js承诺解决了
- localStorage返回NaN(而不是Number,或者什么都没有)
- 恶意js ?或者是什么
- Eslint抱怨'new'或者未使用的变量,正确的方法是什么?
- 什么是用来混淆这个Javascript的,或者我如何去模糊它
- 在HTML中使用自定义标记的含义是什么,或者不使用自定义标记有什么优点
- <noscript>或者其他什么
- 使用""有什么区别吗?或者不是javascript对象中的属性
- Nodejs需要严格使用'或者node严格模式的最佳实践是什么
- 什么是字符串,或者它是从哪里来的