【问题标题】:Cannot parse date with LocalDateTime无法使用 LocalDateTime 解析日期
【发布时间】:2016-04-17 11:38:20
【问题描述】:

我正在尝试使用 Java8 LocalDateTime 解析日期字符串,但没有成功。

例外情况是:DateTimeParseException: Text '28-APR-2015 01:25:00 PM' could not be parsed at index 3

要解析的字符串是:28-APR-2015 01:25:00 PM,我目前使用的模式是 dd-LLL-yyyy hh:mm:ss a

我哪里错了?

谢谢

添加示例代码:

String text = "28-APR-2015 01:25:00 PM";
DateTimeFormatter fromatter = DateTimeFormatter.ofPattern("dd-LLL-yyyy hh:mm:ss a");
try {
        String out = LocalDateTime.parse(text, formatter)
        System.out.println(out);
    } catch (DateTimeParseException e) {
        e.printStackTrace();
    }

使用@Florin 的响应解决了:

    DateTimeFormatter tertiaryFormatter = new DateTimeFormatterBuilder()
        .parseCaseInsensitive().parseLenient().appendPattern("dd-LLL-yyyy hh:mm:ss a").toFormatter();

【问题讨论】:

  • 您能否提供一个简短但完整的示例来说明问题?
  • 我设法重现了这个;我认为您想要MMM 而不是LLL(尽管文档不清楚L 的含义);但这是区分大小写的,所以你仍然需要Apr 而不是APR。仍在研究如何使其不区分大小写...
  • “没有任何成功”是什么意思?你有什么错误吗?
  • 您可以创建一个更宽松的 DateTimeFormatter 类,而不是依赖默认值。例如: DateTimeFormatter formatter = new DateTimeFormatterBuilder() .parseCaseInsensitive() .parseLenient() .appendPattern("dd-LLL-yyyy hh:mm:ss a") .toFormatter()

标签: java parsing datetime format


【解决方案1】:

MMM 英文为 Apr

LLL 英文为 4

请运行这个 sn-p - 它会为你解释很多:

    asList("MMM", "LLL").forEach(ptrn
            -> System.out.println(ptrn + ": " + ofPattern(ptrn, Locale.ENGLISH).format(Month.APRIL))
    );
    Locale.setDefault(Locale.ENGLISH);
    String textM = "28-Apr-2015 01:25:00 PM";
    DateTimeFormatter formatterM = DateTimeFormatter.ofPattern("dd-MMM-yyyy hh:mm:ss a");
    System.out.println(LocalDateTime.parse(textM, formatterM));

    String textL = "28-4-2015 01:25:00 PM";
    DateTimeFormatter formatterL = DateTimeFormatter.ofPattern("dd-LLL-yyyy hh:mm:ss a");
    System.out.println(LocalDateTime.parse(textL, formatterL));

如果您需要使用APR,那么您需要使用DateTimeFormatterBuilder 构建自己的DateTimeFormatter 并设置parseCaseInsensitive 选项。

【讨论】:

    【解决方案2】:

    问题是由于您的时间模式问题。您需要确保您的时间格式可以与模式匹配。

    https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-23
      • 2015-12-25
      • 2016-09-12
      • 2020-09-14
      • 1970-01-01
      • 2021-02-09
      • 2018-02-23
      • 1970-01-01
      相关资源
      最近更新 更多