私は次のコードを持っています:
_var fomattedDate = moment(myDate).format("L");
_
時々moment(myDate).format("L")
が「無効な日付」を返します。それを防ぐ方法があり、代わりに空の文字列を返す方法があるかどうかを知りたいです。
有効な日付があるかどうかを確認することが目的の場合は、MomentのisValid
を使用します。
_var end_date_moment, end_date;
jsonNC.end_date = jsonNC.end_date.replace(" ", "T");
end_date_moment = moment(jsonNC.end_date);
end_date = end_date_moment.isValid() ? end_date_moment.format("L") : "";
_
...これは、日付が無効な場合に_""
_文字列に_end_date
_を使用します。
ここでは、2つの非常に異なることが行われています。
最初:
_0000-00-00T00:00:00
_ isは無効な日付です。 1月の前の月(この形式では月#1)も、日#1の前の月の日もありません。したがって、_0000-00-00
_は意味をなしません。
_0000-01-01T00:00:00
_は有効です-moment("0000-01-01T00:00:00").format("L")
は喜んで_"01/01/0000"
_を返します。
有効な日付(_2015-01-01T00:00:00
_の例など)を使用する場合、コードは問題ありません。
第二:
_console.log(Object.prototype.toString.call(end_date));
_有効な日付があっても[オブジェクト文字列]を返すため、私の場合はif条件が機能しません。
もちろんそうです:format
は文字列を返し、format
を使用して_end_date
_を取得しています。
MomentJSオブジェクトに無効な日付があるかどうかを知りたい場合は、次のように確認できます。
_if (theMomentObject.isValid()) {
// It has as valid date
} else {
// It doesn't
}
_
Date
オブジェクトに無効な日付があるかどうかを知りたい場合:
_if (!isNaN(theDateObject)) {
// It has as valid date
} else {
// It doesn't
}
_
... isNaN
は、1970年1月1日00:00:00 GMT以降の基本的なミリ秒数である日付をプリミティブ形式に強制し、日付に「無効な」日付がある場合、その数値含まれるのはNaN
です。したがって、日付が無効な場合、isNaN(theDateObject)
はtrueになります。