首页 > 解决方案 > 将字符串转换为 LocalDateTime 或 OffsetDateTime

问题描述

我有以下代码:

String dateTimeInStr = "17-Jul-2020 12:12";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-YYYY HH:mm");
       // OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateTimeInStr, formatter);
        LocalDateTime localDateTime = LocalDateTime.parse(dateTimeInStr, formatter);
        System.out.println(localDateTime);
     //   System.out.println(offsetDateTime);

如您所见,我尝试将字符串 17-Jul-2020 12:12 转换为 LocalDateTime 或 OffsetDateTime。但没有任何效果。

Text '17-Jul-2020 12:12' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {WeekBasedYear[WeekFields[MONDAY,1]]=2020, MonthOfYear=7, DayOfMonth=17},ISO resolved to 12:12 of type java.time.format.Parsed

有谁知道如何解决这个问题?提前致谢。

标签: javadatelocaldatetime

解决方案


区分大小写

您正在使用大写的“YYYY”,即week year. 尝试使用小写的“yyyy”:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm");

Locale

并指定一个Locale用于翻译月份名称的人类语言和文化规范。

DateTimeFormatter formatter = 
        DateTimeFormatter
        .ofPattern("dd-MMM-yyyy HH:mm")
        .withLocale( Locale.US );

请参阅在 IdeOne.com 上实时运行的代码

2020-07-17T12:12


推荐阅读