我正在尝试使用格式“ yyyyMMd”与DateTimeFormatter解析“ 2020052”,但它会引发错误(标题),并使用“ yyyyMMdd”引发java.time.format.DateTimeParseException: Text '2020052' could not be parsed at index 6
,是否有人知道解决方案(除了添加一个2前面的0,我正在解析一个包含许多日期的大型数据集),下面是我的代码
val format = DateTimeFormatterBuilder().appendPattern("yyyyMMdd").toFormatter()
date = LocalDate.parse("2020052", format)
答案 0 :(得分:0)
DateTimeFormatter dateFormatter = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR, 4)
.appendValue(ChronoField.MONTH_OF_YEAR, 2)
.appendValue(ChronoField.DAY_OF_MONTH, 1)
.toFormatter();
System.out.println(LocalDate.parse("2020052", dateFormatter));
输出:
2020-05-02
显然,它仅适用于每月前9天内的日期。
答案 1 :(得分:0)
获取7或8个字符的LocalDate的通用方法。 字符串dateString =“ 20200525”;
if (dateString.length() > 6 && dateString.length() <= 8) {
LocalDate dateObj = LocalDate.of(Integer.valueOf(dateString.substring(0, 4)),
Integer.valueOf(dateString.substring(4, 6)), Integer.valueOf(dateString.substring(6)));
}