问题描述
在给定“值”变量的情况下,我的代码应该显示以以下日期格式“ DD / MM / YY-HH:mm:ss”(如果值是有效的日期时间)格式的值,或者仅显示显示值本身(如果值不是有效的日期时间)。
为此,我使用了moment.js中的isValid()方法。我使用这种方法来检查value是否是有效的datetime,然后显示预期的结果。
我的问题是,当值采用无效的日期格式时,Moment会继续返回此弃用警告。
弃用警告:提供的值不是公认的RFC2822或ISO格式。此刻的构建工作归结于js Date(),它在所有浏览器和版本之间都不可靠。不建议使用非RFC2822 / ISO日期格式,并将在即将发布的主要版本中将其删除。有关更多信息,请参阅http://momentjs.com/guides/#/warnings/js-date/。 参数: [0] _isAMomentObject:true,_isUTC:false,_useUTC:false,_l:undefined,_i:,_f:undefined,_strict:undefined,_locale:[object Object]
有人知道我如何避免此警告?
这是我的代码:
let value = "300";
// sometimes value will be "2020-01-15T11:13:20.960429-03:00",for example - which is a valid date
console.log(
moment(value).isValid() ? moment(value).format("DD/MM/YY - HH:mm:ss") : value
);
链接到codeandBox:https://codesandbox.io/s/modern-resonance-tu68c?file=/src/index.js
谢谢!
解决方法
您必须使用moment(String,String,Boolean)
,使用矩标记来指定接受的格式(YYYY
:4位数字的年份,MM
:月,DD
:月中的天,{ {1}}:0-23小时,HH
:0-50秒,mm
:0-59秒,ss
:小数秒,SSSSSS
:UTC偏移)和strict mode。
示例:
Z
let value = "300";
// sometimes value will be "2020-01-15T11:13:20.960429-03:00",for example - which is a valid date
console.log(
moment(value,"YYYY-MM-DDTHH:mm:ss.SSSSSSZ",true).isValid() ? moment(value).format("DD/MM/YY - HH:mm:ss") : value
);