java.time.format.DateTimeParseException:无法在索引0处解析文本“ 2020052”

时间:2020-10-19 23:31:23

标签: java datetime kotlin

我正在尝试使用格式“ 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)

2 个答案:

答案 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)));
    }