momentjsで非推奨の警告を処理する方法 質問する

momentjsで非推奨の警告を処理する方法 質問する

momentjs を使用して無効な日付/時刻文字列をチェックします。

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

これにより、(正しく) よく知られている「非推奨の警告: 指定された値は、認識された RFC2822 または ISO 形式ではありません......」というスタック トレースがスローされます。

しかし、try/catchを追加したとしても:

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を使用しています。

ベストアンサー1

使用する必要がありますmoment(String, String);入力を解析します。フォーマット(またはさまざまなフォーマット)の場合は、moment.ISO_8601ドキュメントには次のように書かれています:

Momentはすでにiso-8601文字列の解析をサポートしていますが、これはmomentを構築するときにフォーマット/フォーマットのリストで明示的に指定できます。

この方法なら非推奨の警告は出ません。実際の例を以下に示します。

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>

PS. とにかく、受け入れられる形式のリストがある場合は、それを使用することをお勧めしますmoment(String, String[]);(必要な場合は厳密な解析も行います)。

おすすめ記事