【问题标题】:Moment.js gives Invalid date in FirefoxMoment.js 在 Firefox 中给出无效日期
【发布时间】:2016-04-05 02:48:27
【问题描述】:

我需要在 moment.js 中转换日期时间。但它在 Chrome 和 Firefox 中给了我不同的结果。

在 Google Chrome 中它给出了正确的结果,但在 Mozilla firefox 中给出了“无效日期”。

谷歌浏览器

moment('2016-Jan-02 02:00 AM').format()
Output: "2016-01-02T02:00:00+05:30"

火狐浏览器

moment('2016-Jan-02 02:00 AM').format()
"Invalid date"

非常感谢您的帮助。

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    您没有指定解析字符串 2016-Jan-02 的格式。所以 moment 回退到原生 Date 对象,这在不同的浏览器中是不一致的。要一致地解析日期,请包含格式字符串。

    例如

    moment("2016-Jan-02", "DD-MMM-YYYY")
    

    那么如果你想将 moment 对象格式化为字符串,你可以做你之前做的:

    moment("2016-Jan-02", "DD-MMM-YYYY").format("DD-MM-YYYY")
    

    在两个浏览器中都返回字符串 02-01-2016。

    【讨论】:

      【解决方案2】:

      建议避免使用自定义格式的矩解析。作为documentation states

      警告: 浏览器对解析字符串的支持不一致。因为没有关于应该支持哪些格式的规范,所以在某些浏览器中有效的内容在其他浏览器中无效。

      为了获得一致的结果解析除 ISO 8601 字符串之外的任何内容,您应该使用 String + Format。

      在您的情况下,一致解析的代码将是:

      moment('2016-Jan-02 02:00 AM', 'YYYY-MMM-DD HH:mm A')
      

      【讨论】:

        猜你喜欢
        • 2015-02-04
        • 1970-01-01
        • 1970-01-01
        • 2014-02-27
        • 2016-10-18
        • 1970-01-01
        • 1970-01-01
        • 2017-04-04
        • 1970-01-01
        相关资源
        最近更新 更多