moment.js、2.2.1 の実行
moment("2010-10-319", ["YYYY-MM-DD"]).isValid()
... が返さtrue
れ、その時点でオブジェクトが 2010 年 10 月 31 日に設定されます。パーサーは、あらゆる種類の不要な文字を削除するようです。
moment("2010-10-31a", ["YYYY-MM-DD"]).isValid(); // true
奇妙なことに、フォーマットの選択肢を追加すると、「ストリッピング」は 1 文字だけに制限されます! (フォーマット文字列のテストは論理和をとるべきではありませんか?)
moment("2010-10-319", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid(); // true
moment("2010-10-3199", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid(); // false (!!!)
この動作は設計によるものですか? 理由がわかりません。
編集: コメンターは、1 つを超える余分な文字が実際に削除される別のケースを見つけました:
moment("2010-10-319qr", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid(); // true (!)
これが実際の動作です: http://jsfiddle.net/grahampcharles/r42jg/6/ (新しいケースで更新)