【问题标题】:javascript - date difference should be zero but it is 18 hoursjavascript - 日期差异应该为零,但它是 18 小时
【发布时间】:2019-08-27 19:57:32
【问题描述】:

这个让我难过。我想它应该很简单。我正在用 Javascript 做一些非常简单的日期减法。我减去相同的日期,我认为它会给出零小时,但它给出了 18 小时。

let inDate = new Date('Tue Aug 27 2019 00:00:00 GMT-0500 (Central Daylight Time)').getTime();
let outDate = new Date('Tue Aug 27 2019 00:00:00 GMT-0500 (Central Daylight Time)').getTime();

document.getElementById('date').innerHTML = new Date(outDate - inDate);
<div id='date'>

</div>

如果它根据您所在的位置产生不同的结果,我得到的结果是:

Wed Dec 31 1969 18:00:00 GMT-0600 (Central Standard Time)

【问题讨论】:

  • outDate - inDate 无论您身在何处都会产生0,但new Date(0) 的打印效果会因您所在的时区而异。

标签: javascript datetime


【解决方案1】:

这是由于您的timezone。如果您在打印之前转换为GMT String,时间将是正确的。 (1969 年 1 月 1 日 00:00:00)

 new Date(outDate - inDate).toGMTString()

您应该会看到正确的日期。

let inDate = new Date('Tue Aug 27 2019 00:00:00 GMT-0500 (Central Daylight Time)').getTime()
let outDate = new Date('Tue Aug 27 2019 00:00:00 GMT-0500 (Central Daylight Time)').getTime()

console.log(new Date(inDate - outDate).toGMTString())

【讨论】:

  • 谢谢!我认为这是超级简单的事情! :)
  • 是一个错字。它应该是 GMT String 而不是 UTC
  • 我的浏览器,在显示的时区中,将 21:00 小时作为时间,如下所示: Wed Dec 31 1969 21:00:00 GMT-0300 (Uruguay Standard Time) 所以,我'米在前一天,史诗少了三个小时。有趣的。谢谢。
  • @Dupocas 看起来该功能已被弃用。 toUTCString 对我很有用。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • @deblocker 减去 2 个相同的日期会产生一个等于纪元日期的零日期:stackoverflow.com/questions/2533563/…
猜你喜欢
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多