Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript moment.js:弃用警告:提供的值不是可识别的RFC2822或ISO格式_Javascript_Node.js_Date_Timezone_Momentjs - Fatal编程技术网

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)