如果您想在Date
2021 年 1 月 1 日对 a 进行硬编码,请不要使用SimpleDateFormat
,那么您就不必处理异常了。
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2021, Calendar.JANUARY, 1);
Date date = cal.getTime();
在 Java 8+ 中,使用新的 Java Time API:
Date date = Date.from(LocalDate.of(2021, 1, 1)
.atStartOfDay(ZoneId.systemDefault())
.toInstant());
Date date = Date.from(LocalDate.parse("2021-01-01")
.atStartOfDay(ZoneId.systemDefault())
.toInstant());
Date date = Date.from(Year.of(2021).atDay(1)
.atStartOfDay(ZoneId.systemDefault())
.toInstant());
Date date = Date.from(ZonedDateTime.of(2021, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault())
.toInstant());
如果您坚持使用SimpleDateFormat
,请断言它不会发生。
Date date;
try {
date = new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01");
} catch (ParseException e) {
throw new AssertionError("Cannot happen: " + e, e);
}