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

标签 java date

我想解析一个只包含日期和月份信息的日期,没有年份。结果日期应设置为当年。

例如,输入将类似于“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/

相关文章:

java - Spring @Autowired 是按名称还是按类型注入(inject) bean?

java - 如何选择或编写自己的java数据结构以允许多属性搜索

windows - 如果所有文件都超过 3 天,则批处理文件删除目录中的子文件夹

Mysql DATE_FORMAT 和计时

Javascript 日期似乎引用了不正确的 DST 开始/结束日期

javascript - 查找每年五月的第二个星期日,具体取决于年份

java - 为什么 Java 对重写的静态方法强制执行返回类型兼容性?

java - 无法正确格式化 setText()

java - 运行 caliper 命令行

mysql - 仅当列值为今天的日期时才需要触发触发器