我尝试用这种格式解析日期:ddYYYY
。例如,我有字符串 141968
,我想知道 day = 14
和 year = 1968
。
我想我必须直接使用 DateTimeFormatter.parse(String)
提供的 TemporalAccessor
,但我找不到如何使用这个结果。在调试时,我看到结果是一个 java.time.Parsed
,它不是公开的,但在字段 fieldValues
中包含我想要的信息。
我如何解析这种特殊格式?
谢谢。
最佳答案
一种方法是默认缺少月份字段:
DateTimeFormatter f = new DateTimeFormatterBuilder()
.appendPattern("ddyyyy")
.parseDefaulting(MONTH_OF_YEAR, 1)
.toFormatter();
LocalDate date = LocalDate.parse("141968", f);
System.out.println(date.getDayOfMonth());
System.out.println(date.getYear());
另一种是查询TemporalAccessor
:
DateTimeFormatter f = DateTimeFormatter.ofPattern("ddyyyy");
TemporalAccessor parsed = f.parse("141968");
System.out.println(parsed.get(ChronoField.YEAR));
System.out.println(parsed.get(ChronoField.DAY_OF_MONTH));
(注意使用“y”,而不是“Y”进行解析)
关于java - 使用 DateTimeFormatter 解析没有月份的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644949/