【问题标题】:Moment isValid method keeps returning deprecation warningMoment isValid 方法不断返回弃用警告
【发布时间】:2021-01-22 17:55:28
【问题描述】:

我的代码应该在给定“值”变量的情况下显示以以下日期格式“DD/MM/YY - HH:mm:ss”格式的该值(如果值是有效的日期时间),或者只是显示值本身(如果值不是有效的日期时间)。

为此,我使用了 moment.js 中的 isValid() 方法。我使用这种方法来检查 value 是否是有效的日期时间,然后显示预期的结果。

我的问题是,当值采用无效的日期形式时,Moment 会不断返回此弃用警告。

弃用警告:提供的值不是可识别的 RFC2822 或 ISO 格式。 moment 构造回退到 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

提前致谢!

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    您必须使用 moment(String, String, Boolean) 指定使用时刻标记接受的格式(YYYY:4 位数年份,MM:月份,DD:月份中的几天,HH:0-23 小时, mm:0-50 秒,ss:0-59 秒,SSSSSS:小数秒,Z:UTC 偏移量)和strict mode

    例子:

    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
    );
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.0/moment.min.js"></script>

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 2021-05-06
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多