验证日期格式

时间:2009-12-14 14:14:18

标签: javascript

我想验证输入的日期是否为yyyy / mm / dd格式。如果用户输入的是dd / mm / yyyy格式,则必须使用Javascript函数自动转换为yyyy / mm / dd。

编辑:

function CheckDateFormat()
{
    EnteredText = document.getElementById('LDate').value;
    LengthOfText = EnteredText.length;
    Status = true;
    for(i=0;i<=LengthOfText;i++)
    {
        currentChar = EnteredText.substr(i,1);
        if (currentChar == '/' && (i != 5 || i != 8))
        {
            alert("Invalid date format");
            document.getElementById('LDate').focus;
            status = false;
        }
        if (status == false)
            break;
    }
}

4 个答案:

答案 0 :(得分:2)

你不能从dd / mm / yyyy或mm / dd / yyyy自动更正,因为例如在03/04/2009这样的日期,人们无法判断人是指dd / mm还是mm / dd。 / p>

所以你唯一能做的就是用regexp来削减支票:

function CheckDateFormat()
{
        EnteredText = document.getElementById('LDate').value;
        LengthOfText = EnteredText.length;
        Status = true;
        dformat= /^\d{4}\/\d{1,2}\/\d{1,2}$/
        if (dformat.test(EnteredText) == null)
        {
            alert("Invalid date format");
            document.getElementById('LDate').focus;
            status = false;
        }
        if (status == false)
            break;
}

答案 1 :(得分:1)

如果您的约束是人们将使用YYYY / MM / DD或DD / MM / YYYY,那么您可以使用它。就像Gnudiff说的那样,没有办法处理MM / DD / YYYY以及DD / MM / YYYY。我真的建议在这个人身上强制使用日历小部件,如果您认为这可能是个问题,则不允许他们输入文本。

    function vd(s) {
    if (!s) {
        //Do whatever you want for an error here
        return null;
    }
    //YYYY/MM/DD
    if (s.match(/^((19|20)\d{2})\/(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])$/)) {
        return s;
    }
    //DD/MM/YYYY
    if (s.match(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d{2})$/)) {
        var m = /^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d{2})$/.exec(s);
        return m[3] + '/' + m[2] + '/' + m[1];
    }
    //Second error here
    return null;
}

答案 2 :(得分:0)

我认为你需要自己编写这样的功能。

验证可以使用正则表达式完成:

  1. 检查输入是否符合您希望的格式。如果是真的,那就做你需要做的一切。
  2. 检查输入格式是否为N并将其转换为您希望的格式。
  3. 重复步骤2,直到您真的不知道日期的格式。
  4. 显示错误。 (并且不要忘记停止提交和/或进一步处理输入。)
  5. 〜克里斯

    PS:在regexlib.comgoogle上搜索一些常见的日期验证模式。你不想再发明轮子,是吗?

答案 3 :(得分:0)

克里斯,

感谢您使用小部件的建议。

我尝试了OpenJS库,它的工作正常: