Javascript moment.js:弃用警告:提供的值不是可识别的RFC2822或ISO格式
我从外部源获取日期作为输入,它是一个字符串Javascript moment.js:弃用警告:提供的值不是可识别的RFC2822或ISO格式,javascript,node.js,date,timezone,momentjs,Javascript,Node.js,Date,Timezone,Momentjs,我从外部源获取日期作为输入,它是一个字符串 const a = '08-01-2019'; 我需要的格式是“MM-DD-YYYY” const outputDateFormat = 'MM-DD-YYYY'; 我正在使用moment.js并在该日期执行以下操作,比如增加一年,减少一天 //adding a year const a = moment(a).add(1, 'years').add(-1, 'days').format(outputDateFormat); 对于上面这一行,
const a = '08-01-2019';
我需要的格式是“MM-DD-YYYY”
const outputDateFormat = 'MM-DD-YYYY';
我正在使用moment.js并在该日期执行以下操作,比如增加一年,减少一天
//adding a year
const a = moment(a).add(1, 'years').add(-1, 'days').format(outputDateFormat);
对于上面这一行,我得到
Deprecation warning: value provided is not in a recognized RFC2822 or ISO format.
moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release.
我的意思是,使用矩转换为我的输出所需的格式会给出不推荐的警告
const finalDate = moment(a).format(outputDateFormat); - Resulting depricated warning
因此,我尝试使用new Date()来避免警告,如下所示
//adding a year - approach #1
const a = moment(new Date(a)).add(1, 'years').add(-1, 'days').format(outputDateFormat);
这不会返回任何错误,但我不会考虑使用new Date()方法,因为我的代码应该跨时区和地区工作。如果我们使用新的Date()代码,可能无法跨时区和地区正常工作?有人能建议吗
因此,我采用了这种方法#2
其中,我以“YYYY-MM-DD”的形式给出日期格式,而不是输入日期格式“MM-DD-YYYY”
这也是,没有返回任何警告,代码工作正常。这能跨时区和地区工作吗
有人能建议我使用方法1或方法2使我的代码跨时区/地区工作,而不出现任何错误/动量警告吗
我是否需要在此处使用矩.utc
使代码跨时区工作?我认为不需要UTC,因为我没有任何与时间相关的验证
我的意思是,我想不需要time.utc(),因为我没有时间组件,请建议
moment.utc('2019-01-08').add(1, 'years').add(-1, 'days').format(outputDateFormat)
或者,有人能提出比这更好的方法,使代码能够跨时区和地区工作,而不会出现任何问题吗?在构造新的矩对象时,您需要指定输入的格式
const moment=require('moment')
常数a='08-01-2019';
const outputDateFormat='MM-DD-YYYY';
常数b=时刻(a,'MM-DD-YYYY')。添加(1,'years')。添加(-1,'days')。格式(outputDateFormat);
控制台日志(b);
构造新力矩对象时,需要指定输入的格式
const moment=require('moment')
常数a='08-01-2019';
const outputDateFormat='MM-DD-YYYY';
常数b=时刻(a,'MM-DD-YYYY')。添加(1,'years')。添加(-1,'days')。格式(outputDateFormat);
控制台日志(b);
您如何知道输入格式是MM-DD-YYYY?OP声明这是输出格式。我猜。重要的是它是必需的。他可以更改它。我知道它的格式是:MM-DD-YYYY@tuan Anh Tran是否可以跨时区和区域设置而无任何问题?@user1660325 yesHow您知道输入格式是MM-DD-YYYY吗?OP声明这是输出格式。我猜。重要的是它是必需的。他可以更改它。我知道它的格式是:MM-DD-YYYY@tuan Anh Tran是否能够跨时区和地区正常工作?@user1660325 Yes如果要解析的字符串不是moment.js支持的两种格式之一,它将返回内置解析器(因此会出现警告),因此moment(a)
和moment(new Date(a))
将给出相同的结果。当然,在第二种情况下,moment.js不会给出错误,因为它被赋予了一个日期对象,因此没有什么需要解析的。如果要解析的字符串不是moment.js支持的两种格式之一,它将返回到内置解析器(因此出现警告),因此moment(a)
和moment(new Date(a))
将给出相同的结果。当然,在第二种情况下,moment.js不会给出错误,因为它被赋予了一个Date对象,所以没有什么需要解析的。
moment.utc('2019-01-08').add(1, 'years').add(-1, 'days').format(outputDateFormat)