【发布时间】:2020-04-13 08:43:44
【问题描述】:
我有点使用以下来源来创建自己的 sdf 模式: https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/text/SimpleDateFormat.html
不幸的是
SimpleDateFormat mFormatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
...
private Date getLatestTimeStamp() throws ParseException {
return mFormatter.parse("Mon, 19 Dec 2019 11:32:04 +0000");
}
导致以下错误,我不明白为什么:
java.text.ParseException: Unparseable date: "Mon, 19 Dec 2019 11:32:04 +0000"
任何帮助都会很棒!
编辑:我使用的是 JDK 13
编辑 2:
因此我清理了我的代码,创建了一个新项目,但它仍然无法工作:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String source = "Thu, 19 Dec 2019 11:32:04 +0000";
DateTimeFormatter mFormatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z");
System.out.println(OffsetDateTime.parse(source, mFormatter));
}
}
在完整的错误信息之后:
线程“main”java.time.format.DateTimeParseException 中的异常:无法在索引 0 处解析文本“Thu, 19 Dec 2019 11:32:04 +0000” 在 java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2049) 在 java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1951) 在 java.base/java.time.OffsetDateTime.parse(OffsetDateTime.java:402) 在 main.java.de.taka.main.Main.main(Main.java:15)
进程以退出代码 1 结束
【问题讨论】:
-
试试 SimpleDateFormat("yyyy-MMM-dd HH:mm:ss"); dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
-
不太确定问题的原因,但是您的代码似乎在 repl.it 上运行。看看this 另外,可能不是问题的原因,但星期一不会是12 月 19 日
-
看这里
2019-dec-19是Thursday但不是星期一,也不要使用SimpleDateFormat你可以使用javaOffsetDateTime.parse("Thu, 19 Dec 2019 11:32:04 +0000",formatter)中最新的datetime api -
我建议你不要使用
SimpleDateFormat和Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。所以扔掉你的第一个 sn-p 并努力让第二个工作。 -
相关:java DateTimeFormatterBuilder fails on testtime(但更喜欢下面的好答案)。
标签: java simpledateformat java-13 unparseable