【问题标题】:JavaScript - Date.now() returning incorrect date [duplicate]JavaScript - Date.now() 返回不正确的日期 [重复]
【发布时间】:2018-04-08 10:49:28
【问题描述】:

我想获取设定日期和今天之间的天数。

当我动态获取今天的日期而不是硬编码时,我不明白为什么我总是得到错误的结果。

HTML

<span id="today1">xxx</span> days - wrong
<br>
<span id="today2">xxx</span> days - wrong
<br>
<span id="hardcoded">xxx</span> days - correct

JS

var startDate = new Date(2016,04,01).getTime();
var todayDate1 = new Date().getTime();
var todayDate2 = Date.now();
var hardcodedDate = new Date(2018,04,08).getTime();

$("#today1").html(Math.floor((todayDate1 - startDate)/8.64e7));
$("#today2").html(Math.floor((todayDate2 - startDate)/8.64e7));
$("#hardcoded").html(Math.floor((hardcodedDate - startDate)/8.64e7));

结果

707 days - wrong
707 days - wrong
737 days - correct

JSFiddle

我错过了什么?

【问题讨论】:

  • 你认为new Date(2016,04,01) 会给你什么日期?提示:从现在起大约一个月,而不是今天。编辑:不知道我为什么要害羞:月份数字从 0 = 一月开始。
  • (旁注:强烈建议不要在数字上使用前导 0s,尽管在现代 JavaScript 引擎中它不应该触发旧式八进制解析。)
  • 月份 4 是五月。
  • 谢谢大家。现已排序。

标签: javascript date


【解决方案1】:

今天是 2018 年 4 月 8 日。new Date(2018, 4, 8)5 月 2018 年 8 月。引用 MDN documentation on the Date constructor

参数月份是0-based。这意味着January = 0December = 11

使用3 作为月份参数来表示四月。

【讨论】:

  • 谢谢,将 startDate 设置为 Date(2016,03,01) 给了我所需的结果。
猜你喜欢
  • 2012-07-01
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
相关资源
最近更新 更多