我找不到问题所在。我正在尝试转换日期:
“2014 年 7 月 10 日星期四 13:33:26 +0200”
使用以下代码从字符串到日期:
String formatType = "EEE, dd MMM yyyy HH:mm:ss Z";
Date startzeit = new SimpleDateFormat(formatType).parse(einsatz.getString("startzeit"));
但是我得到了这个例外:
java.text.ParseException: Unparseable date: "Thu, 10 Jul 2014 13:33:26 +0200"
您正在创建一个
SimpleDateFormat
而不指定区域设置,因此它将使用默认区域设置。从变量名的外观来看,这可能不是英语 - 所以解析“Thu”和“Jul”会很困难。
尝试:
String formatType = "EEE, dd MMM yyyy HH:mm:ss Z";
Date startzeit = new SimpleDateFormat(formatType, Locale.US)
.parse(einsatz.getString("startzeit");
(这对我有用,具有您的样本值。)
java.time
2014 年 3 月,Java 8 引入了现代的
java.time
日期时间 API,取代了容易出错的旧版java.util
日期时间 API。任何新代码都应使用 java.time
API。
您可以使用内置的
OffsetDateTime
将日期时间字符串解析为
DateTimeFormatter#RFC_1123_DATE_TIME
。
演示:
class Main {
public static void main(String args[]) {
OffsetDateTime odt = OffsetDateTime.parse("Thu, 10 Jul 2014 13:33:26 +0200",
DateTimeFormatter.RFC_1123_DATE_TIME);
System.out.println(odt);
}
}
输出:
2014-07-10T13:33:26+02:00
注意: 如果由于某种原因,您需要
java.util.Date
的实例,请让 java.time
API 完成解析日期时间字符串的繁重工作,并将上述代码中的 odt
转换为 java.util.Date
实例使用 Date date = Date.from(odt.toInstant())
。
了解有关现代日期时间 API 的更多信息