如何在Java中解析缺少年份信息的日期

时间:2018-11-19 15:59:32

标签: java date

我想解析仅包含日期和月份信息的日期,而不包含年份。结果日期应设置为当前年份。

例如,输入内容类似于“ 11月11日”。

我的想法是使用这样的东西:

DateTimeFormatter.ofPattern("EEEE dd. MMMM");

但是在结果日期中,年份设置为1970,这很有意义。

是否可以在DateTimeFormatter内将省略的年份设置为某个值?

1 个答案:

答案 0 :(得分:8)

解析为MonthDay并添加年份。适当更改Locale

解析输入字符串。

final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd. MMMM", Locale.UK);
final MonthDay monthDay = MonthDay.parse("11. November", formatter) ;

应用所需的年份。

final int currentYear = LocalDate.now().getYear();
final LocalDate date = monthDay.atYear(currentYear);

值得一提的是,如果您有2月29日这样的日期,并且添加了2018年(不是a年),那么它将被推回到28日,因为29/02/2018是无效日期。