1. 程式人生 > 程式設計 >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內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!