- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
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
字符串。
这里发生了两件截然不同的事情。
第一:
0000-00-00T00:00:00
是无效日期。一月之前没有月份(在该格式中是第一个月),也没有第一天之前的一个月。所以 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));
It returns [object String] even with a valid date, so the if condition doesn't working in my case.
当然可以: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。
关于javascript - Momentjs : How to prevent "Invalid date"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28993107/
我是一名优秀的程序员,十分优秀!