Moment: isValidが正しく機能しない

作成日 2019年10月28日  ·  4コメント  ·  ソース: moment/moment

バグを説明する
isValidが正しく機能しない

再現するには
動作を再現する手順:
moment('Chicago Illinois 46702').isValid(); // true

予想される行動
偽である必要があります

最も参考になるコメント

const allPossibleFormats = [
  'D MMMM YYYY',
  'D MMMM YYYY HH:mm',
  'DD-MM-YY',
  'DD-MM-YYYY',
  'DD.MM.YYYY',
  'DD.MM.YYYY HH:mm',
  'DD/MM/YY',
  'DD/MM/YYYY',
  'DD/MM/YYYY HH:mm:ss',
  'HH:mm:ss',
  'M/D/YYYY',
  'D/M/YYYY',
  'MM-DD-YY',
  'MM-DD-YYYY',
  'MM-DD-YYYY HH:mm:ss',
  'MM/DD/YY',
  'MM/DD/YYYY',
  'MM/DD/YYYY HH:mm:ss',
  'MMM D YYYY',
  'MMM D YYYY LT',
  'MMMM Do YYYY',
  'MMMM Do YYYY LT',
  'YYYY-DD-MM HH:mm:ss',
  'YYYY-MM',
  'YYYY-MM-DD',
  'YYYY-MM-DD HH:mm',
  'YYYY-MM-DD HH:mm:ss',
  'YYYY-MM-DD LT',
  'YYYY-MM-DD h:mm:ss A',
  'YYYY-MM-DDTHH:mm:ssZ',
  'ddd, MMM D YYYY LT',
  'dddd D MMMM YYYY HH:mm',
  'dddd, MMMM Do YYYY LT'
];

moment('Chicago Illinois 46702', allPossibleFormats, true).isValid(); // false
moment('18/01/1944', allPossibleFormats, true).isValid(); // true
moment('22-10-2020', allPossibleFormats, true).isValid(); // true
moment('1944-01-18 12:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01-01 00:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01', allPossibleFormats, true).isValid(); // true

また、 allPossibleFormats配列を拡張して、別の日付/日時形式を追加することもできます

全てのコメント4件

有効な日付になっているため、有効です。

new Date('Chicago Illinois 46702'); // Wed Jan 01 46702 00:00:00 GMT+0000 (Greenwich Mean Time)

ただし...あなたはまた、瞬間から警告を見るはずです:

moment('Chicago Illinois 46702').isValid(); 

JavaScriptコンソールの場合:

非推奨の警告:提供された値は、認識されているRFC2822またはISO形式ではありません。 モーメントの構築はjsDate()にフォールバックしますが、これはすべてのブラウザーとバージョンで信頼できるわけではありません。 RFC2822 / ISO以外の日付形式は推奨されておらず、今後のメジャーリリースで削除される予定です。 詳細については、 http: //momentjs.com/guides/#/warnings/js -date /を参照して

これはどうですか

moment('22-10-2020', 'dd-MM-yyyy', true).isValid();

falseを返します。

編集
わかります:moment('22 -10-2020 '、' DD-MM-YYYY '、true).isValid(); 動作します

const allPossibleFormats = [
  'D MMMM YYYY',
  'D MMMM YYYY HH:mm',
  'DD-MM-YY',
  'DD-MM-YYYY',
  'DD.MM.YYYY',
  'DD.MM.YYYY HH:mm',
  'DD/MM/YY',
  'DD/MM/YYYY',
  'DD/MM/YYYY HH:mm:ss',
  'HH:mm:ss',
  'M/D/YYYY',
  'D/M/YYYY',
  'MM-DD-YY',
  'MM-DD-YYYY',
  'MM-DD-YYYY HH:mm:ss',
  'MM/DD/YY',
  'MM/DD/YYYY',
  'MM/DD/YYYY HH:mm:ss',
  'MMM D YYYY',
  'MMM D YYYY LT',
  'MMMM Do YYYY',
  'MMMM Do YYYY LT',
  'YYYY-DD-MM HH:mm:ss',
  'YYYY-MM',
  'YYYY-MM-DD',
  'YYYY-MM-DD HH:mm',
  'YYYY-MM-DD HH:mm:ss',
  'YYYY-MM-DD LT',
  'YYYY-MM-DD h:mm:ss A',
  'YYYY-MM-DDTHH:mm:ssZ',
  'ddd, MMM D YYYY LT',
  'dddd D MMMM YYYY HH:mm',
  'dddd, MMMM Do YYYY LT'
];

moment('Chicago Illinois 46702', allPossibleFormats, true).isValid(); // false
moment('18/01/1944', allPossibleFormats, true).isValid(); // true
moment('22-10-2020', allPossibleFormats, true).isValid(); // true
moment('1944-01-18 12:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01-01 00:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01', allPossibleFormats, true).isValid(); // true

また、 allPossibleFormats配列を拡張して、別の日付/日時形式を追加することもできます

それでも問題が解決しない場合は、再度開いてください。

このページは役に立ちましたか?
0 / 5 - 0 評価