我尝试用这种格式解析日期:ddYYYY.例如,我有字符串141968,我想知道那天= 14和年= 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”进行解析)