Spring Boot如何直接将yyyy-MM-dd格式的文本字符串转换为何种类型?

2026-05-21 13:081阅读0评论SEO资讯
  • 内容介绍
  • 相关推荐

本文共计539个文字,预计阅读时间需要3分钟。

Spring Boot如何直接将yyyy-MM-dd格式的文本字符串转换为何种类型?

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 LocalDateT

解决方案:确保使用的日期格式与文本字符串的格式完全匹配,包括月份和日期的顺序。以下是转换代码示例:

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

public class Main { public static void main(String[] args) { String dateString=2020-03-12; DateTimeFormatter formatter=DateTimeFormatter.ofPattern(yyyy-MM-dd); LocalDateTime dateTime=LocalDateTime.parse(dateString, formatter); System.out.println(dateTime); }}

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

Spring Boot如何直接将yyyy-MM-dd格式的文本字符串转换为何种类型?

问题解决

解决方案:先将文本字符串日期转化为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内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

本文共计539个文字,预计阅读时间需要3分钟。

Spring Boot如何直接将yyyy-MM-dd格式的文本字符串转换为何种类型?

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 LocalDateT

解决方案:确保使用的日期格式与文本字符串的格式完全匹配,包括月份和日期的顺序。以下是转换代码示例:

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

public class Main { public static void main(String[] args) { String dateString=2020-03-12; DateTimeFormatter formatter=DateTimeFormatter.ofPattern(yyyy-MM-dd); LocalDateTime dateTime=LocalDateTime.parse(dateString, formatter); System.out.println(dateTime); }}

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

Spring Boot如何直接将yyyy-MM-dd格式的文本字符串转换为何种类型?

问题解决

解决方案:先将文本字符串日期转化为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内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!