1

我想将 a 转换String为 aDate但出现以下异常:

java.text.ParseException: Unparseable date: "Thu Jan 27 14:47:58 CET 2011"
    at java.text.DateFormat.parse(DateFormat.java:335)
    at de.datev.boxi.Main.run(Main.java:36)
    at com.crystaldecisions.sdk.plugin.desktop.program.internal.ProgramWrapper.main(ProgramWrapper.java:174)

我应该使用哪些参数将字符串格式化为日期?

我的程序看起来像:

try {
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
    Date d1 = sdf.parse("Thu Jan 27 14:47:58 CET 2011");
    System.out.println(d1);
} catch (ParseException ex) {
    ex.printStackTrace();
}
4

2 回答 2

3

尝试:

new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
于 2013-01-08T14:48:32.650 回答
2

在 Java 中解析这种“复杂”的时间戳总是很棘手。我也有同样的经历。

Java 在解析您的时区时遇到问题。

甚至更有可能默认语言环境与您的时间字符串不匹配,我建议您将英语语言环境添加到您的通话中:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);

我总是建议添加此参数,因为根据执行环境,您的应用程序可以在某些机器上运行而在其他机器上失败 - 取决于默认语言环境。

于 2013-01-08T14:53:31.447 回答