TL;博士
如果你的目标是确定你是否有一个有效的日期,请使用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")
高兴地回来了
"01/01/0000"
对于它。
如果您使用有效日期(例如
2015-01-01T00:00:00
示例),代码很好。
第二:
console.log(Object.prototype.toString.call(end_date));
即使有有效日期,它也会返回[objectString],因此if条件在我的情况下不起作用。
当然了:
format
返回字符串,然后使用
总体安排
得到
结束日期(_D)
.
如果您想知道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。