今天面试遇到一个算法题,如何检验一个日期是否为有效日期,当时只想着把字符串分段截取,然后再去检验,没注意到还有SimpleDateFormat这种,特此总结一下
import java.text.ParseException;
import java.text.SimpleDateFormat;
/**
* @author zhouyanxiang
* @Date 2021-03-2021/3/11-20:51
* @Title 检验一个字符串是否为有效日期
*/
public class Solution {
public static void main(String[] args) {
String s = "20070229";
boolean validDate = isValidDate(s);
System.out.println(validDate);
}
public static boolean isValidDate(String s) {
boolean flag = true;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
simpleDateFormat.setLenient(false);
// 检验字符串s
simpleDateFormat.parse(s);
} catch (ParseException e) {
flag = false;
// e.printStackTrace();
}
return flag;
}
}