Moment.jsを使用してJavaScriptでISO8601の日付を検証しようとしています
console.log(moment("2011-10-10T14:48:00", "YYYY-MM-DD", true).isValid())
Falseを返します。どこが間違っているのですか?日付タイプの形式が正しくありませんか?
バージョン:モーメント2.5.1
Praveenの例がjsfiddleで機能する理由はわかりませんが、サンプルが機能しない理由は、形式がYYYY-MM-DDではないためです。時間も含まれているため、無効と見なされます。日付に時間を入れずに試してみると、trueが返されます。
代わりにこれを試してください:moment("2011-10-10T14:48:00", "YYYY-MM-DDTHH:mm:ss", true).isValid()
2番目の引数として文字列パターンを使用しないようにするには、次のように呼び出すことができます。
moment("2011-10-10T14:48:00", moment.ISO_8601).isValid() // true
moment("2016-10-13T08:35:47.510Z", moment.ISO_8601).isValid() // true
さて、私はそれを見つけました。
ドキュメント に従って、
バージョン2.3.0以降では、最後の引数に
boolean
を指定して、Momentが厳密な解析を使用するようにすることができます。厳密な解析では、形式と入力が正確に一致している必要があります
厳密な操作を使用するため、false
を返します。以下のコードの使用を克服するには:
alert(moment("2011-10-10T14:48:00", "YYYY-MM-DDTHH:mm:ss", true).isValid())
//This will return true
削除strict parsing
、
alert(moment("2011-10-10T14:48:00", "YYYY-MM-DD").isValid())
//This will return true
これを使用して、日付の一部を一致させます
console.log(moment("2011-10-10T14:48:00", "YYYY-MM-DD", false).isValid())
完全にフォーマットを一致させたい場合は
console.log(moment("2011-10-10T14:48:00", "YYYY-MM-DDTHH:mm:ss", true).isValid())