加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用DateTimeFormatter解析没有月份的日期

发布时间:2020-12-14 23:32:42 所属栏目:Java 来源:网络整理
导读:我尝试用这种格式解析日期:ddYYYY.例如,我有字符串141968,我想知道那天= 14和年= 1968. 我想我必须直接使用DateTimeFormatter.parse(String)给出的TemporalAccessor,但是我找不到如何使用这个结果.在调试时我看到结果是java.time.Parsed,它不是公共的,但在
我尝试用这种格式解析日期: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”进行解析)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读