记录一下项目中遇到的一个bug,当时原有工具类中的代码如下:
public static boolean isDate(String str) {
boolean result = true;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
format.parse(str);
}catch (Exception e){
result = false;
}
return result;
}
当输入字符串为2018-02-31时返回true,日期默认转换为了2018-03-03,未对时间格式进行严格的限制。修改代码如下:
public static boolean isDate(String str) {
boolean result = true;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
format.setLenient(false);
format.parse(str);
}catch (Exception e){
result = false;
}
return result;
}
format.setLenient(false)是必须的,对日期格式进行严格的限制