JAVA 从键盘输入日期的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:47:22
1.怎样从键盘接收日期输入,显示是yyyy-mm-dd的格式;
2.能判断输入的是数字,并且月份在1~12.天数也能正确判断超出范围。(主要第一点,能给出第二点最好)

用正则表达式判断
输入一个字符串str1,再定义一个正则表达式str2=
[((1[6-9]|[2-9]\d)\d{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-)))];
最后用str1.matches(str2)方法判断,是就输出正确,否则就不正确

读入字符串,用字符串的macthes方法判断是否匹配正则表达式
网上搜一下正则表达式:这是一个比较完整的,还包括闰年的判断
(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]

{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]

|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]

|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1]

[0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468]

[048]|[13579][26])|((0[48]|[2468][048]|

[3579][26])00))-02-29)
这只能判断整个能不能符合要求。也可以分开判断,用字符串的split方法将三个部分分开,这样的话只能自己写方法判断了,用正则表达式就没多大意义了