我想解析一个只包含日期和月份信息的日期,没有年份。结果日期应设置为当年。
例如,输入将类似于“11. November”。
我的想法是使用这样的东西:
DateTimeFormatter.ofPattern("EEEE dd. MMMM");
但在结果日期中,年份设置为 1970,这是有道理的。
有没有办法将省略的年份设置为 DateTimeFormatter
中的某个值?
最佳答案
解析成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 年(不是闰年),那么它将被推迟到 28 日,因为 29/02/2018 不是有效日期。
关于java - 如何在java中解析缺少年份信息的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53378414/