【问题标题】:moment.js 2 digit year converting wrong 4 digit yearmoment.js 2 位数年份转换错误的 4 位数年份
【发布时间】:2015-05-15 14:06:21
【问题描述】:

有没有人遇到过 Moment.js 的这个问题:在 Firefox 中使用 moment("6/12/15").format("M/D/YYYY h:mm:ss A") 我得到 6/12/ 1915 年而不是 2015 年 6 月 12 日?

【问题讨论】:

  • 如果我访问 momentjs.com 站点并将其粘贴到控制台中,我会得到 2015(以及弃用通知)。
  • @T.J.Crowder 我在 Firefox 中得到 1915。简单的解决方法,不要使用 2 位数的年份。
  • 你可以重写 moment.parseTwoDigitYear 方法来设置你自己的自定义窗口,例如看这里:github.com/moment/moment/issues/2219
  • @Jack:果然,发生在 Firefox 而不是 Chrome。这就是为什么会有弃用通知的原因。 :-)

标签: javascript jquery momentjs


【解决方案1】:

当您将随机字符串扔到moment 而不告诉它它是什么格式时,它会退回到JavaScript Date 对象进行解析,并且您传入的格式不是标准定义的。这使您对特定于实现的行为敞开心扉。在这种情况下,您描述的情况发生在 Firefox 上,而不是 Chrome。

Moment 是deprecating it entirely 这已经足够了。

要使用该字符串获得可靠的结果,请告诉 Moment 它的格式:

moment("6/12/15", "M/D/YY").format("M/D/YYYY h:mm:ss A")

【讨论】:

  • 会的。我很欣赏所有覆盖对我不起作用的解释。所以我将确保用户不能通过 2 位数的年份,因为我需要一个 4 位数的数据库年份。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
  • 2011-01-02
  • 2018-09-20
  • 2010-12-11
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多