今天面试遇到一个算法题,如何检验一个日期是否为有效日期,当时只想着把字符串分段截取,然后再去检验,没注意到还有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; } }