一个字符串 20060405 怎样验证能否转换成日期

解决方案 »

  1.   

    if (!fIsDate(form.txtYear.value + "-"+ form.txtMonth.value +"-" + form.txtDay.value)){
      alert("\请输入正确的生日年份!");
      form.txtYear.focus();
      return false; 
     }function fIsDate(strDate){
    //日期格式:YYYY-MM-DD
    //功能:判断一个字符串是否为合法日期
     var strSeparator = "-"; //日期分隔符
     var strDateArray;
     var intYear;
     var intMonth;
     var intDay;
     var boolLeapYear;
     strDateArray = strDate.split(strSeparator);
     if(strDateArray.length!=3) return false;
     intYear = parseInt(strDateArray[0],10);
     intMonth = parseInt(strDateArray[1],10);
     intDay = parseInt(strDateArray[2],10);
     if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)) return false;
     if(intMonth>12||intMonth<1) return false;
     if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)) return false;
     if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)) return false;
     if(intMonth==2){
      if(intDay<1) return false;
      boolLeapYear = false;
      if((intYear%100)==0){
       if((intYear%400)==0) boolLeapYear = true;
      }
      else{
       if((intYear%4)==0) boolLeapYear = true;
      }
      if(boolLeapYear){
       if(intDay>29) return false;
      }
      else{
       if(intDay>28) return false;
      }
     }
     return true;

      

  2.   

    先转成  yyyy-mm-dd 字符串形式,
    然后try
    {
    Datetime.parse(...);
    }
    catch
    {}
    try则转换成功,catch则失败
      

  3.   

    using System;public class MyClass
    {
        public static void Main()
        {
            DateTime dt;
            string s1 = "2006-08-04";
            string s2 = "20060229";
            
            DateTime.TryParse(s1, out dt);
            Console.WriteLine(dt);
            DateTime.TryParse(s2, out dt);
            Console.WriteLine(dt);
            
            Console.ReadLine();
        }
    }错误的格式转换出来的是公元1年1月1日