java.time.format.DateTimeParseException: Text ‘xxx’ could not be parsed, unparsed text found at index 10异常处理

使用Java8的DateTimeFormatter格式化LocalDate时,格式化报错:

Exception in thread "main" java.time.format.DateTimeParseException: Text '2021-05-12T11:02:30.063' could not be parsed, unparsed text found at index 10
	at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1952)
	at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
	at java.time.LocalDate.parse(LocalDate.java:400)
	at java.time.LocalDate.parse(LocalDate.java:385)
	at Test6.main(Test6.java:17)

错误提示在第17行代码,代码如下:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @Auther: www.itzhimei.com
 * @Description:
 */
public class Test6 {

    public static void main(String[] args) {
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        DateTimeFormatter formatterStart = DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00");
        System.out.println(formatterStart.format(localDateTime));
        DateTimeFormatter formatterEnd = DateTimeFormatter.ofPattern("yyyy-MM-dd 23:59:59");
        System.out.println(formatterEnd.format(LocalDate.parse(localDateTime.toString())));
    }
}

这一行代码使用了一个localDateTime格式化为LocalDate。

LocalDateTime是日期+时间的日期类,LocalDate表示的是年月日的日期类,在格式化的时候,二者不能通通过parse相互转换,也就是LocalDate解析不了LocalDateTime类型的日期数据,所以报了文章开头的错误。

解决方法:将LocalDate.parse()方法中的参数,更换为LocalDate类型的数据就可以了。

例如:

System.out.println(formatterEnd.format(LocalDate.parse(localDate.toString())));

重试代码即可进行正确的日期格式化。