Bil*_*lie 2 java validation datetime date
用户给我一个字符串,应表示过期日期,格式为“yyyy-mm-dd”。
我想验证它是否是日期,这就是我的做法:
try {
DateFormat df = new SimpleDateFormat("yyyy-mm-dd");
System.out.println("Validating " + date + " as date");
df.parse(date);
}
catch (ParseException ex) {
// not yyyy-mm-dd date.
System.out.println(": Bad");
out.println(date + " cannot be parsed as a date. format: yyyy-mm-dd.");
return;
}
Run Code Online (Sandbox Code Playgroud)
如果用户给我"2014-02-02gy.",
然后它打印:"Validating 2014-02-02gy. as date"
即没有抛出异常。
为什么?以及如何验证日期?提前致谢。
编辑:使用正则表达式作为评论者的建议之一:
if (!date.matches("\\d{4}-\\d{2}-\\d{2}") {
out.println("Not a date");
}
Run Code Online (Sandbox Code Playgroud)
您始终可以使用某种格式来反转解析,以查看最终得到的结果是否与开始时的结果相同。
DateFormat df = new SimpleDateFormat("yyyy-mm-dd");
String after = df.format(df.parse(date));
if (after.equals(date)) {
// validated
}
Run Code Online (Sandbox Code Playgroud)