我正在开发一个项目,需要根据长度和模式验证多个日期。我使用简单的日期格式并发现了很多问题。我的要求是严格允许日期字符串匹配“yyyy/MM/dd”并且严格允许10个字符。
下面的代码没有给出各种测试输入字符串的预期结果。
public static boolean checkformat(String dateString){
boolean flag = false;
Date d1 = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
format.setLenient(false);
try {
d1 = format.parse(dateString);
flag=true;
} catch (ParseException ex) {
ex.printStackTrace();
return false;
}
return flag;
}
上面的代码对于各种输入返回“true”,例如“99/03/1”(应该是0099/03/01)和99/1/1(应该是0099/01/1)。由于输入字符串不是来自 from,因此我无法在将它们传递给此方法之前执行验证。请建议任何对日期格式非常严格的实现(“yyyy/MM/dd”)。
最佳答案
我建议您在格式化日期之前尝试使用正则表达式验证日期。
用户使用下面的代码进行验证
public static boolean checkformat(String dateString){
boolean flag = false;
Date d1 = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
format.setLenient(false);
try {
if (dateString.matches("([0-9]{4})/([0-9]{2})/([0-9]{2})")) { // use this regex
d1 = format.parse(dateString);
flag=true;
}
} catch (ParseException ex) {
ex.printStackTrace();
return false;
}
return flag;
}
关于java - Java 简单日期格式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35376823/