Moment.js在Firefox中提供无效日期

时间:2015-12-31 04:52:31

标签: javascript momentjs

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

在谷歌浏览器中,它提供了正确的结果,但在Mozilla中,Firefox提供了#34;无效日期"。

Google Chrome

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

Mozilla firefox

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

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:10)

建议避免使用自定义格式的时刻解析。正如documentation states

  

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

     

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

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

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

答案 1 :(得分:0)

您未指定用于解析字符串2016-Jan-02的格式。因此,时刻回到了本机的Date对象,该对象在不同的​​浏览器中是不一致的。要一致地解析日期,请在其中附带一个格式字符串。

例如

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

然后,如果要将时刻对象格式化为字符串,则可以执行之前的操作:

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

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