Momentjs:如何防止"Invalid date"?
Momentjs : How to prevent "Invalid date"?
我有以下代码:
var fomattedDate = moment(myDate).format("L");
有时 moment(myDate).format("L")
returns "Invalid date",我想知道是否有办法防止这种情况 return 一个空字符串。
TL;DR
如果您的目标是查明您是否拥有有效日期,请使用 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
字符串将使用 ""
。
详情
这里发生了两件截然不同的事情。
第一个:
0000-00-00T00:00:00
是无效日期。一月之前没有月份(在该格式中是第 1 个月),也没有第 1 天之前的一个月中的一天。所以 0000-00-00
没有意义。
0000-01-01T00:00:00
将是有效的 — moment("0000-01-01T00:00:00").format("L")
很高兴 returns "01/01/0000"
。
如果您使用有效日期(例如您的 2015-01-01T00:00:00
示例),代码就可以。
第二个:
console.log(Object.prototype.toString.call(end_date));
It returns [object String] even with a valid date, so the if condition doesn't working in my case.
当然可以:format
returns 一个字符串,而您正在使用 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 以来的基本毫秒数,并且当日期具有 "invalid"日期,它包含的数字是NaN
。所以 isNaN(theDateObject)
在日期无效时为真。
我有以下代码:
var fomattedDate = moment(myDate).format("L");
有时 moment(myDate).format("L")
returns "Invalid date",我想知道是否有办法防止这种情况 return 一个空字符串。
TL;DR
如果您的目标是查明您是否拥有有效日期,请使用 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
字符串将使用 ""
。
详情
这里发生了两件截然不同的事情。
第一个:
0000-00-00T00:00:00
是无效日期。一月之前没有月份(在该格式中是第 1 个月),也没有第 1 天之前的一个月中的一天。所以 0000-00-00
没有意义。
0000-01-01T00:00:00
将是有效的 — moment("0000-01-01T00:00:00").format("L")
很高兴 returns "01/01/0000"
。
如果您使用有效日期(例如您的 2015-01-01T00:00:00
示例),代码就可以。
第二个:
console.log(Object.prototype.toString.call(end_date));
It returns [object String] even with a valid date, so the if condition doesn't working in my case.
当然可以:format
returns 一个字符串,而您正在使用 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 以来的基本毫秒数,并且当日期具有 "invalid"日期,它包含的数字是NaN
。所以 isNaN(theDateObject)
在日期无效时为真。