javascript - JS 日期 API:两个日期之间的差异(以小时为单位)——当前日期的奇怪行为
问题描述
我知道这是一个以前可能已经回答过的基本问题,但我一直在为这个问题摸不着头脑。所以这里是:
我想获取设定日期和当前时间之间的小时数。
我尝试了以下操作(这是在 2018/05/23 21:35 UTC-4:00 完成的):
(new Date(2018, 05, 24).getTime() - new Date(2018,05,23).getTime())/(3600*1000) // 24
(new Date(2018, 05, 24).getTime() - new Date().getTime())/(3600*1000) // 746.4949...
奇怪的是,从当前时间中减去明天会得到 746 小时。期望我会得到〜2.4小时。我还尝试了以下变体:
// Straight up dates
(new Date(2018, 05, 24) - new Date(2018,05,23))/(3600*1000) // 24
(new Date(2018, 05, 24) - new Date())/(3600*1000) // 746.4949...
// Using valueOf
(new Date(2018, 05, 24).valueOf() - new Date(2018,05,23).valueOf())/(3600*1000) // 24
(new Date(2018, 05, 24).valueOf() - new Date().valueOf())/(3600*1000) // 746.4949...
// Using Date.now()
(new Date(2018, 05, 24).valueOf() - new Date().now())/(3600*1000) // 746.4949...
知道为什么这是一个问题,以及如何解决它?
非常感谢!
解决方案
Javascript 日期中的月份数字是从零开始的new Date(2018, 05, 24)
,2018 年 6 月 24 日也是如此,而不是 2018 年 5 月 24 日。从月份数字中减去 1 以获得您期望的结果。
console.log((new Date(2018, 4, 24).getTime() - new Date().getTime())/(3600*1000))
这会打印2.14
出我在 5 月 23 日 21:50 UTC-04:00 运行它的时间。
推荐阅读
- reactjs - 如何从 react-navigation 标头调用函数?
- verilog - Verilog - 使用 1 位输入进行屏蔽
- swift - 对成员“close()”的模糊引用
- mysql - 如果一列非常频繁,则mysql中的复合索引
- python - 如何比较python元素中的两个二维列表?
- algorithm - 你如何检查拓扑排序的尝试计算是否确实是一个
- excel - 根据另一个单元格的值自动填充单元格,无需公式
- javascript - 仅在文件的某个子集之前运行 Cypress before()
- powerbi - 功率双日期测量卡
- objective-c - 将属性字符串逐行写入 RTF 文件