当前位置:  开发笔记 > 编程语言 > 正文

为什么我的模式("yyyyMM")无法使用DateTimeFormatter进行解析(java 8)

如何解决《为什么我的模式("yyyyMM")无法使用DateTimeFormatter进行解析(java8)》经验,为你挑选了1个好方法。

当我使用时SimpleDateFormat,它可以解析.

SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
format.setLenient(false);
Date d = format.parse(date);

但是当我使用Java 8 DateTimeFormatter

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM");
LocalDate localDate = LocalDate.parse(date, formatter);

它抛出

java.time.format.DateTimeParseException:文本 '201510' 无法解析:无法从TemporalAccessor获得LOCALDATE:{年份= 2015,MonthOfYear = 10},类型的Java的ISO .time.format.Parsed

日期的字符串值是"201510".



1> Tunaki..:

问自己一个问题:哪一天应该用String解析"201510"?A LocalDate需要一天,但由于日期中没有解析的日期,LocalDate因此无法构造实例.

如果您只想解析一年和一个月,则可以使用该YearMonth对象:

YearMonth localDate = YearMonth.parse(date, formatter);

但是,如果您真的想要LocalDate从此String中解析,则可以构建自己的String,DateTimeFormatter以便它将该月的第一天用作默认值:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                                .appendPattern("yyyyMM")
                                .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
                                .toFormatter();
LocalDate localDate = LocalDate.parse(date, formatter);

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有