how to handle deprecation warning in momentjs

匿名 (未验证) 提交于 2019-12-03 01:27:01

问题:

I want to use momentjs to check for invalid date/time strings:

var invalid = '2017-03-18 23;00;00'; if (moment(invalid).isValid()) {   return 'valid date' } 

This (correctly) throws a stacktrace with the familiar 'Deprecation warning: value provided is not in a recognized RFC2822 or ISO format......'

But even if I add a try/catch:

try {   var invalid = '2017-03-18 23;00;00';   if (moment(invalid).isValid()) {     return 'valid date'   } catch (err) {   throw Error ('invalid date format'); } 

the stacktrace is still printed. What do I need to do to avoid the stacktrace from being printed?

I've searched all similar questions on StackOverflow but they all try to solve a different problem (fixing the input or finding the correct syntax to parse the input).

I using v2.18.1.

回答1:

You have to use moment(String, String); to parse your input. If you don't want to specify a format (or an array of formats), you can use moment.ISO_8601. As the docs says:

Moment already supports parsing iso-8601 strings, but this can be specified explicitly in the format/list of formats when constructing a moment

This way you will not have deprecation warning. Here a working example:

var invalid = '2017-03-18 23;00;00'; if (moment(invalid, moment.ISO_8601).isValid()) {   console.log('valid date'); } else {   console.log('invalid date'); }

PS. Anyway, if you have a list of accepted format, I suggest to use moment(String, String[]); (and strict parsing, if needed).



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!