网站地图    收藏   

主页 > 后端 > java >

Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题

来源:自学PHP网    时间:2020-09-27 14:40 作者:小飞侠 阅读:

[导读] Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题...

今天带来Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题教程详解

Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题

问题复现

Exception in thread "main" java.time.format.DateTimeParseException: Text '2020-03-12' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2020-03-12 of type java.time.format.Parsed
 at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1920)
 at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1855)
 at java.time.LocalDateTime.parse(LocalDateTime.java:492)
 at demo.LocalDateTimeUtils.parseString(LocalDateTimeUtils.java:22)
 at demo.DateTimeDemo.main(DateTimeDemo.java:12)
Caused by: java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2020-03-12 of type java.time.format.Parsed
 at java.time.LocalDateTime.from(LocalDateTime.java:461)
 at java.time.format.Parsed.query(Parsed.java:226)
 at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
 ... 3 more
Caused by: java.time.DateTimeException: Unable to obtain LocalTime from TemporalAccessor: {},ISO resolved to 2020-03-12 of type java.time.format.Parsed
 at java.time.LocalTime.from(LocalTime.java:409)
 at java.time.LocalDateTime.from(LocalDateTime.java:457)
 ... 5 more
 

问题解决

解决方案:先将文本字符串日期转化为LocalDate类型,再将LocalDate转化为LocalDateTime

LocalDateTimeUtils.parseStringToLocalDateTime(
    couponForm.getStartTime(), DateTimeFormatPatternConstants.YYYY_MM_DD)
/**
 * 解析字符串为日期
 * <p>
 * 说明:
 * 1. 该方法主要解决yyyy-MM-dd格式文本字符串无法直接转换为LocalDateTime的问题
 *
 * @param source  需要解析的日期字符串
 * @param formatPattern 日期格式化模式
 * @return 格式化后的日期
 */
public static LocalDateTime parseStringToLocalDateTime(String source, String formatPattern) {
 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(formatPattern);
 LocalDate localDate = LocalDate.parse(source, dateTimeFormatter);
 return localDate.atStartOfDay();
}

java.time.LocalDate.atStartOfDay()方法将此日期与午夜时间组合在一起,以便在此日期开始时创建LocalDateTime

可参考文档

到此这篇关于Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题的文章就介绍到这了,更多相关SpringBoot yyyy-MM-dd转换为LocalDateTime内容请搜索自学php网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学php网!


以上就是关于Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题全部内容,感谢大家支持自学php网。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论