如何验证输入是否是javascript中的有效日期[重复]

How to validate if the input is a valid date in javascript [duplicate]

提问人:Asbah Qadeer 提问时间:7/21/2017 最后编辑:Asbah Qadeer 更新时间:12/7/2021 访问量:11735

问:

我想验证函数的日期输入是否为有效日期。 我有以下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 
        }

    }

感谢你们的爱和帮助!

JavaScript 的HTML

评论

0赞 Mohammed Joraid 7/21/2017
在您的案例中,有效数据的定义是什么?
0赞 Saurabh Yadav 7/21/2017
stackoverflow.com/questions/1353684/......

答:

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 对其进行测试