如何验证MM / dd / yyyy hh:mm格式的DateTime?

时间:2011-06-11 05:34:47

标签: javascript asp.net regex

我使用MaskedEditExtender输入日期时间。我无法弄清楚如何验证它。

是否有任何正则表达式用于验证日期以及时间MM / dd / yyyy hh:mm

或任何Javascript函数??

6 个答案:

答案 0 :(得分:6)

这将解决您的问题:

^(([0]?[1-9]|1[0-2])/([0-2]?[0-9]|3[0-1])/[1-2]\d{3}) (20|21|22|23|[0-1]?\d{1}):([0-5]?\d{1})$

答案 1 :(得分:3)

Javascript有Date.parse

美国格式化日期为mm / dd / yyyy hh:mm:ss

alert(new Date(Date.parse("09/10/2011 12:00")))

将于2011年9月10日中午返回

答案 2 :(得分:2)

使用DateTime.ParseDateTime.TryParse(还有ParseExactTryParseExact等效内容。

如果字符串不代表有效的DateTime,则不会解析。

DateTime myDateTime = DateTime.ParseExact(myString, 
                                          "MM/dd/yyyy hh:mm", 
                                          CultureInfo.InvariantCulture);

如果值不可解析,上面将抛出异常。如果您想避免抛出异常的可能性,请使用Try变体 - 这需要out参数并测试函数的返回值是否成功。

答案 3 :(得分:2)

如果你想要正则表达式,这应该有效:

^(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(19|20)\d\d ([01]\d|2[0-3]):[0-5]\d$

答案 4 :(得分:0)

您可以尝试使用以“dd / MM / yyyy HH:mm”格式验证日期的功能

    function ValidateDate(dt) {
        try {
            var isValidDate = false;
            var arr1 = dt.split('/');
            var year=0;var month=0;var day=0;var hour=0;var minute=0;var sec=0;
            if(arr1.length == 3)
            {
                var arr2 = arr1[2].split(' ');
                if(arr2.length == 2)
                {
                    var arr3 = arr2[1].split(':');
                    try{
                        year = parseInt(arr2[0],10);
                        month = parseInt(arr1[1],10);
                        day = parseInt(arr1[0],10);
                        hour = parseInt(arr3[0],10);
                        minute = parseInt(arr3[1],10);
                        //sec = parseInt(arr3[0],10);
                        sec = 0;
                        var isValidTime=false;
                        if(hour >=0 && hour <=23 && minute >=0 && minute<=59 && sec >=0 && sec<=59)
                            isValidTime=true;
                        else if(hour ==24 && minute ==0 && sec==0)
                            isValidTime=true;

                        if(isValidTime)
                        {
                            var isLeapYear = false;
                            if(year % 4 == 0)
                                 isLeapYear = true;

                            if((month==4 || month==6|| month==9|| month==11) && (day>=0 && day <= 30))
                                    isValidDate=true;
                            else if((month!=2) && (day>=0 && day <= 31))
                                    isValidDate=true;

                            if(!isValidDate){
                                if(isLeapYear)
                                {
                                    if(month==2 && (day>=0 && day <= 29))
                                        isValidDate=true;
                                }
                                else
                                {
                                    if(month==2 && (day>=0 && day <= 28))
                                        isValidDate=true;
                                }
                            }
                        }
                    }
                    catch(er){isValidDate = false;}
                }

            }

            return isValidDate;
        }
        catch (err) { alert('ValidateDate: ' + err); }
    }

答案 5 :(得分:0)

以下正则表达式:

^([1-9]|([012][0-9])|(3[01]))\/([0]{0,1}[1-9]|1[012])\/([1-2][0-9][0-9][0-9]) [0-2][0-9]:[0-9][0-9]

给出这个结果:

<块引用>

03/03/2021 02:12