日期:2014-05-20  浏览次数:20680 次

求日期正则表达式
日期格式YYMMDD HH:MM,传入已字符串,判断是否为该格式

------解决方案--------------------
yyMMdd HH:mm吧.
不懂正则,使用try....SimpleDateFormart("yyMMdd HH:mm").parse();
------解决方案--------------------
Java code

private static boolean isDate(String dateStr) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd HH:mm");
        try {
            sdf.parse(dateStr);
        } catch (ParseException e) {
            //e.printStackTrace();
            return false;
        }
        return true;
    }
System.out.println(isDate("100809 12"));

------解决方案--------------------
^(([2][01]|[1][6-9])\d{2}([0]\d|[1][0-2])([0-2]\d|[3][0-1])(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1}))?$ 

------解决方案--------------------
要判断平年和闰年,必须是YYYY格式,而不能是YY格式

举例如00,如果是1900,那么它不是闰年,而2000则是闰年

参考
正则应用之——日期正则表达式
------解决方案--------------------
探讨
引用:
^(([2][01]|[1][6-9])\d{2}([0]\d|[1][0-2])([0-2]\d|[3][0-1])(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1}))?$

你这种是可以的,但是没有判断平年和闰年之分,而其4,6,9月份都有31号的

------解决方案--------------------
探讨
日期格式YYMMDD HH:MM,传入已字符串,判断是否为该格式

------解决方案--------------------
/^[1-9][0-9]{3}-(0?[1-9]|1[0|1|2])-(0?[1-9]|[1|2][0-9]|3[0|1]) (0?[1-9]|1[0-9]|2[0-3]):(0?[0-9]|[1|2|3|4|5][0-9]):(0?[0-9]|[1|2|3|4|5][0-9])$/;

这个是检查 yyyy-MM-dd HH:MM:SS 的,照着自己的要求改下吧。

------解决方案--------------------
一个特牛的日期时间判断正则表达式 
 
这里是判断YYYY-MM-DD这种格式的,基本上把闰年和2月等的情况都考虑进去了,不过我已经忘了在哪里找到的。 

^((((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?[13456789]|1[012])-(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)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])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?[13456789]|1[012])-(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)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$