最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Moment.js gives Invalid date in Firefox - Stack Overflow

programmeradmin2浏览0评论

I have a requirement to convert date time in moment.js. But it gives me different result in Chrome and Firefox.

In Google Chrome it gives correct result but in Mozilla firefox gives "Invalid date".

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"

Your help is much appreciated.

I have a requirement to convert date time in moment.js. But it gives me different result in Chrome and Firefox.

In Google Chrome it gives correct result but in Mozilla firefox gives "Invalid date".

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"

Your help is much appreciated.

Share Improve this question asked Dec 31, 2015 at 4:52 DibishDibish 9,29322 gold badges68 silver badges107 bronze badges
Add a comment  | 

3 Answers 3

Reset to default 32

It's recommended to avoid using moment parsing with custom format. As the documentation states:

Warning: Browser support for parsing strings is inconsistent. Because there is no specification on which formats should be supported, what works in some browsers will not work in other browsers.

For consistent results parsing anything other than ISO 8601 strings, you should use String + Format.

In your case, the code for consistent parsing will be:

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

You're not specifying a format for parsing the string 2016-Jan-02. So moment falls back to the native Date object, which is inconsistent across the different browsers. To parse the date consistently, include a format string along with it.

e.g.

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

Then if you want to format the moment object as a string, you can do what you were doing before:

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

which returns the string 02-01-2016 in both browsers.

You need to specify input date format inside moment

moment("input_date_string", "format_of_input_date_string").format("format_of_output_date_string")

eg:

moment("27-06-2022", "DD-MM-YYYY").format("YYYY-MM-DD")

output: 2022-06-27

发布评论

评论列表(0)

  1. 暂无评论