【问题标题】:java.time.format.DateTimeParseException: Text 'Tue Jan 08 00:00:00 IST 2019' could not be parsed at index 0 [duplicate]java.time.format.DateTimeParseException:无法在索引 0 处解析文本“Tue Jan 08 00:00:00 IST 2019”[重复]
【发布时间】:2019-06-03 08:41:45
【问题描述】:

即使给出适当的格式,我也面临DateTimeParseException

DateTimeFormatter ft = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy");
LocalDateTime.parse("Tue Jan 08 00:00:00 IST 2019", ft);

如果我遗漏了什么,请帮忙?

【问题讨论】:

  • 可能是地区问题。星期二是否以您的计算机设置的语言称为星期二?
  • 您似乎正在尝试解析来自Date.toString() 的返回值?如果是这样最好直接转换,例如LocalDateTime.ofInstant(yourDate.toInstant(), ZoneId.systemDefault())

标签: java datetime parsing datetime-parsing


【解决方案1】:

这可能是由于您计算机上的区域设置所致。 您可以在创建 DateTimeFormatter 时提供 Locale。

DateTimeFormatter ft = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy", Locale.US);

这将确保始终正确解析日期。

【讨论】:

    【解决方案2】:

    这可能是由于您的系统区域设置未使用 Mon-Sun 作为工作日短名称,例如德语语言环境将引发相同的异常:

    Locale.setDefault(Locale.GERMAN);
    DateTimeFormatter ft = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy");
    LocalDateTime.parse("Tue Jan 08 00:00:00 IST 2019", ft);
    

    如果您使用匹配的语言环境,代码将起作用,例如美国:

    Locale.setDefault(Locale.US);
    DateTimeFormatter ft = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy");
    LocalDateTime.parse("Tue Jan 08 00:00:00 IST 2019", ft);
    

    【讨论】:

    • 永远不要在代码的某些部分设置默认语言环境。那会随机中断。使用以 Locale 作为参数的 DateTimeFormatter 构建器
    猜你喜欢
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多