【问题标题】:Java (not JavaScript) Date parsing issue: java.text.ParseExceptionJava(不是 JavaScript)日期解析问题:java.text.ParseException
【发布时间】:2020-04-01 08:30:38
【问题描述】:

以下日期格式有问题:"Jan 15 2020 11:11:50.000 +0000"。我需要将日期解析为 ms。

奇怪的行为是我不能使用 date.parse()。该函数总是以"java.text.ParseException: Unparseable date: "Jan 15 2020 11:11:50.000 +0000";" 失败。

有人知道如何手动解析日期或在 date.parse() 中更改日期格式?

谢谢大家

【问题讨论】:

  • 这是一个非标准数据。您需要进行自定义解析和/或使用 Moment.js 之类的库来执行此操作。
  • 你能分享你的尝试吗?这不是因为一个方法失败了你就不能用了,可能是你用错了
  • 嗨,这是我的代码:var d = Date.parse("Jan 15 2020 11:11:50.000 +0000);
  • Java 还是 JavaScript?白天和黑夜都是不同的。另外,您的搜索结果是什么?哪方面不够?也请create a Minimal, Reproducible Example
  • 那是哪个date.parse()??

标签: java timestamp


【解决方案1】:

有了ZonedDateTime 和这个模式LLL d yyyy HH:mm:ss.SSS Z (DateTimeFormatter) 你就可以处理它

String value = "Jan 15 2020 11:11:50.000 +0000";
DateTimeFormatter dt = DateTimeFormatter.ofPattern("LLL d yyyy HH:mm:ss.SSS Z", Locale.ENGLISH);
ZonedDateTime l = ZonedDateTime.parse(value, dt);
System.out.println(l.format(dt)); // Jan 15 2020 11:11:50.000 +0000

【讨论】:

  • 您好,感谢您的反馈。我不能使用下面提到的代码。 codeString value = "2020 年 1 月 15 日 11:11:50.000 +0000"; DateTimeFormatter dt = DateTimeFormatter.ofPattern("LLL d yyyy HH:mm:ss.SSS Z", Locale.ENGLISH); ZonedDateTime l = ZonedDateTime.parse(value, dt); newTimeStamp = l.format(dt);code 知道这里有什么问题吗?我得到一个“失踪的;”错误。
  • 首选MMM 而不是LLL。对于大多数语言,它们是相同的,但对于少数不同的语言,MMM 是正确的。 LLL 用于独立月份,即当月份不是日期的一部分时使用的形式,就像这里一样。
  • @qwertzy 如果我将newTimeStamp 声明为String,我可以运行您评论中的代码(并返回相同的字符串)。运行答案中的代码也没有问题。
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多