【问题标题】:Getting wrong month in moment.js在 moment.js 中出现错误的月份
【发布时间】:2013-11-20 11:33:50
【问题描述】:

我正在使用通过 RequireJS 包含的 Moment.js。当我打电话给Moment().month() 时,我总是得到 10 号而不是 11 号。有什么想法怎么会发生这种情况?

【问题讨论】:

  • 不是january month 0吗? Note: Months are zero indexed, so January is month 0.
  • 在 javascript 的日期中,月份从 0-11 开始计算。 w3schools.com/jsref/jsref_obj_date.asp
  • 试试 Moment().format("MM")
  • 您始终可以使用 .add 方法来解决零索引 .add(1, 'M')
  • @JeremyHamm 这对 12 月不起作用。 moment.parseZone('12/01/2018','MM/DD/YYYY').add({M:1}).month()

标签: javascript momentjs


【解决方案1】:

根据documentation,月份是零索引的。所以一月是 0,十二月是 11。moment().month() 将给出当前月份(11 月)的从零开始的索引,即 10。

【讨论】:

  • 只是一个澄清。基于 0 的月份索引是 Moment.js 从 Javascript 继承的一项功能。有关详细信息,请参阅第 15.9.1.4 段中的ECMAScript specification
  • 几乎感觉他们应该将其公开为 1-12 以代替 ECMAScript 规范的直观使用。
  • 按这个逻辑,为什么年份、日期、小时和分钟不是从零开始的?(snark,抱歉)
  • 他们实际上声称月份不是从零开始的:M MM 1..12 月份数
  • 我们应该创建一个专门的网页来说明由此浪费的总开发时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多