有时候我们需要判断用户的日期格式是否正确,
虽然绝大多数会在前台处理,但是也有需要从文件流读入的情况,如果日期不合格就需要抛异常,这时候就需要禁止SimpleDateFormat的自动计算功能。
这时候就需要用到setLenient
SimpleDateFormat.setLenient(true) : 默认值true,不严格解析日期,会自动计算。
SimpleDateFormat.setLenient(false):严格解析日期,如果日期不合格就抛异常,不会自动计算。
package com.common.utils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.logging.Logger;
/**
* @ClassName DateUtils
* @Description DOTO
* @Author mischen
* @Date 2022/7/31 0031 8:14
* @Version 1.0
**/
public class DateUtils {
private static final String dateFormatter = "yyyyMMdd";
private static boolean isValid(String dateStr){
final DateFormat sdf = new SimpleDateFormat(dateFormatter);
//这种情况下java不会把你输入的日期进行计算,比如54个月那么就是不合法的日期了,直接异常
sdf.setLenient(false);
try {
sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
return false;
}
return true;
}
public static void main(String[] args) {
System.out.println(isValid("20195428"));
System.out.println(isValid("aaa"));
}
}