【问题标题】:Convert string to LocalDateTime or OffsetDateTime [duplicate]将字符串转换为 LocalDateTime 或 OffsetDateTime [重复]
【发布时间】:2020-07-17 11:52:16
【问题描述】:

我有以下代码:

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

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

【问题讨论】:

    标签: java date localdatetime


    【解决方案1】:

    区分大小写

    您使用的是大写“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 );
    

    看到这个code run live at IdeOne.com

    2020-07-17T12:12

    【讨论】:

    • 我正在打电话,无法检查,但我很确定它仍然无法正常工作。创建LocalDateTime 时缺少有关秒数的信息。您需要为其提供默认值。
    • @akuzminykh,它有效。我检查了)
    • @DenB 只为我:你能检查一下,它是哪一秒?它只是零吗?
    • 秒和毫秒分别是00和000
    • @akuzminykh,是的,它是 0
    猜你喜欢
    • 2019-11-27
    • 2017-01-30
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多