我知道这是一个以前可能已经回答的基本问题,但我一直在为这个问题烦恼不已。所以这就是:
我想获得设定日期和当前时间之间的小时数。
我尝试了以下(这是在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.4h。我还尝试了以下变化:
// 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...
知道为什么这是一个问题,以及如何解决它?
非常感谢!
答案 0 :(得分:3)
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))
当我在5月23日21:50 UTC-04:00运行它时会打印2.14
。
答案 1 :(得分:1)