【问题标题】:String could not be parsed at index 0 [duplicate]无法在索引 0 处解析字符串 [重复]
【发布时间】:2019-02-15 11:52:59
【问题描述】:

我正在尝试按以下方式解析此字符串,但出现异常。谁能帮帮我?

String dateStr = "Thu 14 Feb 2019 15:05:48 +0200";
LocalDateTime datetime = LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern("EEE d MMM yyyy HH:mm:ss Z"));

例外:

java.time.format.DateTimeParseException: Text 'Thu 14 Feb 2019 15:05:48 +0200' could not be parsed at index 0

【问题讨论】:

  • 我猜你输入了错误的代码。您想解析 oldDate 但您的变量是 dateStr 这意味着您想使用此模式格式化日期,但您的 String 不匹配。显示 oldDate 的样子
  • @RafałSokalski 那么为什么 OP 会收到该错误消息?
  • 您的语言环境是什么? Thu 可能需要英文。
  • @RafałSokalski 确实是对的。您将oldDate 放入其中,而不是dateStr。将oldDate 替换为dateStrit's working as expected。所以oldDate-String 可能是不同的格式。 oldDate 的值是多少?
  • 这工作LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern("EEE d MMM yyyy HH:mm:ss Z", Locale.ENGLISH));

标签: java


【解决方案1】:
String dateStr = "Thu 14 Feb 2019 15:05:48 +0200";
        Locale bLocale = new Locale.Builder().setLanguage("en").setRegion("US").build();
        LocalDateTime datetime = LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern("EEE d MMM yyyy HH:mm:ss Z", bLocale));
        System.out.println(datetime);

您应该创建一个语言环境作为参数。

【讨论】:

    【解决方案2】:

    我不确定,但我认为EEE 仅在您指定语言环境时才有效。无论如何,如果您忽略月份中的某一天,它会起作用。

    LocalDateTime datetime = LocalDateTime.parse(
        dateStr.substring(4), // skip "Thu "
        DateTimeFormatter.ofPattern("d MMM yyyy HH:mm:ss Z"));
    

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2018-04-04
      • 2020-06-10
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多