如何处理 MOMENTJS 中的弃用警告



我想使用 momentjs 检查无效的日期/时间字符串:

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

这(正确(抛出一个堆栈跟踪,其中包含熟悉的"弃用警告:提供的值不是可识别的RFC2822或 ISO 格式......">

但即使我添加一个尝试/捕获:

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

堆栈跟踪仍会打印。我需要做什么来避免打印堆栈跟踪?

我已经在 StackOverflow 上搜索了所有类似的问题,但它们都试图解决不同的问题(修复输入或找到正确的语法来解析输入(。

我使用 v2.18.1。

您必须使用 moment(String, String); 来解析您的输入。如果不想指定格式(或格式数组(,可以使用 moment.ISO_8601 。正如文档所说:

Moment 已经支持解析 iso-8601 字符串,但这可以在构造时刻时的格式/格式列表中显式指定

这样,您就不会有弃用警告。这里有一个工作示例:

var invalid = '2017-03-18 23;00;00';
if (moment(invalid, moment.ISO_8601).isValid()) {
  console.log('valid date');
} else {
  console.log('invalid date');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

附言。无论如何,如果你有一个接受格式的列表,我建议使用moment(String, String[]);(如果需要,还可以进行严格的解析(。

指定日期的字符串格式,然后警告将消失

moment("2017-1-27", 'YYYY-M-D').format('DD MMMM YYYY')
<</div> div class="one_answers">

下面对我删除RFC2822警告

有用

使用moment(字符串,格式字符串(将字符串转换为日期。

 var newDt = Moment(this.state.dob,"MM/DD/YY")

下面的代码从日期到字符串

var dt = Moment(newDt).format("YYYY-MM-DD") 

这样它就不会显示警告消息。

导致该警告的时刻表达式中添加.format()没有任何参数是我的解决方案:

moment(r.created_at.toDate()).format()

最新更新