我有一个输入表单,用户可以从日历中选择日期,但我也希望他们能够手动输入日期
当用户点击输入框之外时调用函数 validateDate()
//Make sure valid date is entered into the field, otherwise throw back an error
function validateDate(date) {
var dateObj = new Date(date);
console.log(dateObj.getDate());
if (dateObj == "Invalid Date") {
dateWrongFormat(false);
return false;
}
return dateTimeToString(dateObj, true);
}
问题是:如果用户意外输入“55/02/2014”之类的内容,它会转换为“02 Jul 2018”,而不是显示它是无效日期(注意:这是今年过去的 4 年)他们进来了)。
是否有简单的方法来检查日期或月份是否无效,或者我是否必须创建自己的日期检查系统?
编辑:所以看起来无论我输入什么,它都认为它是一个有效的日期 - 即使使用 moment.js 进行格式化。感谢大家的帮助,但我必须为此编写自己的帮助!
最佳答案
尝试使用 Date.parse。如果您执行 Date.parse("55/02/2014")
,它将返回 NaN。
更新 像这样的东西-
<script>
function validateDate(date) {
var datems = Date.parse(date);
if (isNaN(datems)) {
dateWrongFormat(false);
return false;
}else{
var dateObj = new Date(date);
return dateTimeToString(dateObj, true);
}
}
</script>
关于当天数大于月份时,javascript Date 会创建奇怪的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29158547/