使用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())));
重试代码即可进行正确的日期格式化。