提问人:Asbah Qadeer 提问时间:7/21/2017 最后编辑:Asbah Qadeer 更新时间:12/7/2021 访问量:11735
如何验证输入是否是javascript中的有效日期[重复]
How to validate if the input is a valid date in javascript [duplicate]
问:
我想验证函数的日期输入是否为有效日期。 我有以下HTML标记
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-calendar"></i> Check in</span>
<input id="checkinner" type="date" onchange="datechange(this)" class="form-control" data-inputmask="'alias': 'dd/mm/yyyy'" placeholder="Enter checkin date of birth">
</div>
以下是我在javascript中的函数
function datechange(element) {
if (element.value.IsValidDate())
{
//code
}
}
感谢你们的爱和帮助!
答:
1赞
Afnan Makhdoom
7/21/2017
#1
试试这个:
function datechange(element) {
var date = Date.parse(element.value.toString());
if (isNaN(date))
alert('This is not a date object');
else
alert('This is a date object');
}
评论
2赞
CAK2
2/21/2019
根据 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...,“不建议使用 Date.parse,因为在 ES5 之前,字符串的解析完全依赖于实现。不同主机解析日期字符串的方式仍然存在许多差异,因此应手动解析日期字符串(如果要容纳许多不同的格式,库可以提供帮助)。
0赞
Regolith
7/21/2017
#2
试试这个,
function datechange(element) {
function isValidDate(s) {
var regex=new RegExp("([0-9]{4}[-](0[1-9]|1[0-2])[-]([0-2]{1}[0-9]{1}|3[0-1]{1})|([0-2]{1}[0-9]{1}|3[0-1]{1})[-](0[1-9]|1[0-2])[-][0-9]{4})");
return regex.test(s);
}
[document.getElementById("checkinner").value].forEach(function(s) {
if(isValidDate(s)){
console.log(s + ' : ' + isValidDate(s))
} else {
console.log('not valid')
}
});
}
<div class="input-group">
<span class="input-group-addon">
<i class="fa fa-calendar"></i> Check in
</span>
<input id="checkinner" type="date" onchange="datechange(this)" class="form-control" data-inputmask="'alias': 'dd/mm/yyyy'" placeholder="Enter checkin date of birth">
</div>
评论
0赞
Suprabhat Biswal
7/21/2017
dd/mm/yyyy
或者两者都是有效的日期格式。拆分日期字符串并不是这个问题的完整答案。dd-mm-yyyy
/
0赞
Zander
1/5/2021
我不知道为什么,但是如果我在这里运行这个代码片段,即使有有效的日期,它也会说无效,我的网站上也会发生同样的情况,但是如果我在 jsFiddle 中运行它,它会说它是有效的
0赞
Zander
1/5/2021
forEach 函数返回 aaaa-mm-dd,使用 jsFiddle 对其进行测试
评论