当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

时间DateTime的正则表达式(ISO8601)

  public const string DateTime = //——日期部分是牛人写的,可以判断闰月"^\\s*((((1[6-9]|[2-9]\\d)\\d{2})-(0[13578]|1[02])-(0[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0[469]|11)-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-02-(0[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)[13579][26])-02-29)|(((1[6-9]|[2-9]\\d)[2468][048])-02-29)|(((1[6-9]|[2-9]\\d)0[48])-02-29)|(([13579]6)00-02-29)|(([2468][048])00-02-29)|(([3579]2)00-02-29))" + //——下面是时间部分,属于我的原创。虽然写的不好,但也可以用了。
 
  "(" +   //——>把时间和上面的日期隔开"((T)|(\\s))(" + //——>时间开始 可以为空格 或者T "([0-1]\\d)|([2][0-4])" + //——>小时"([:][0-5][0-9]){2}" +    //分,秒,重复2次")\\s*" + ")?$";   //——>问号表示时间可以为>=1支持格式:2001-12-31 //一般手写的话,基本上写个年月日,所以这个匹配2001-12-31 24:59:59   //DateTime.ToString()的默认输出格式2001-12-31T24:59:59//DateTime.ToString("s")输出的ISO8601格式当然,前后的空格也是允许的。省的用Tirm函数了。
 
  不支持:2001-1-1   //年和月的0需要不足,不允许缩写2001-12-31 1:1:1 //这也是缩写,也不允许。
 
  如果做到国际上的程序单子,你会被时间搞崩溃,在欧洲国家,时间和我们这不是一样描述的所以存入数据库时强烈建议用ISO8601格式(也可以用UTC)
 
  比如我们的格式,通常为 2008年12月31日,但是有的国家就喜欢使用:2008年31日-12月甚至还有的国家喜欢:31日-12月-2008年。甚至还有用AM PM的。
 
  你拿这种国家没办法,所以可以使用ISO8601格式,适合任何国家。
 
  在输出时格式化一下就可以了。
 
  //——附加日期牛的的解释(如果不想研究直接用就可以了,很乱)
 
  引用网页:http://www.cnblogs.com/josephshi/archive/2008/04/10/1146582.html表达式测试范围为1600到9999年^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|   /*平年闰年1 35 7 8 10 12月*/(((1[6-9]|[2-9]\d)\d{2})-(0?[469]|11)-(0?[1-9]|[12]\d|30))| 
                 /*平年闰年4 6 9 11月*/(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))| 
               /*平年2月*/(((1[6-9]|[2-9]\d)[13579][26])-0?2-29)|            /*经过分析只要一个整数的最后两位数能被4整除那么这个数就可以被4整除,于是有了下面五行*/(((1[6-9]|[2-9]\d)[2468][048])-0?2-29)|(((1[6-9]|[2-9]\d)0[48])-0?2-29)|(([13579]6)00-0?2-29)|(([2468][048])00-0?2-29)|(([3579]2)00-0?2-29))$月份天数如果是一位数加不加零都可以的版本:^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[469]|11)-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)[13579][26])-0?2-29)|(((1[6-9]|[2-9]\d)[2468][048])-0?2-29)|(((1[6-9]|[2-9]\d)0[48])-0?2-29)|(([13579]6)00-0?2-29)|(([2468][048])00-0?2-29)|(([3579]2)00-0?2-29))$月份天数如果是一位数必须加零的版本:^((((1[6-9]|[2-9]\d)\d{2})-(0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0[469]|11)-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-02-(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)[13579][26])-02-29)|(((1[6-9]|[2-9]\d)[2468][048])-02-29)|(((1[6-9]|[2-9]\d)0[48])-02-29)|(([13579]6)00-02-29)|(([2468][048])00-02-29)|(([3579]2)00-02-29))$
相关内容
赞助商链接