一个非常令人困惑的“ParseException:Unparseable date”(SimpleDateFormat)错误

时间:2013-10-16 22:25:02

标签: java windows macos

我在两台计算机上运行SimpleDateFormat.parse()程序:Mac OS X笔记本电脑和Windows桌面。在桌面上,日期解析会抛出ParseException

代码很简单:new SimpleDateFormat("E, d MMM yyyy HH:mm:ss Z").parse("Wed, 4 Jul 2001 12:08:56 -0700")

Locale.getDefault会在两台计算机上返回en_US

java -version在Mac上返回1.6.0_65,在Windows计算机上1.7.0_21抛出ParseException

我完全没有想到ParseException在Windows环境中发生的原因。有人会有线索吗?

干杯。

2 个答案:

答案 0 :(得分:1)

Windows允许混合和匹配国际化设置,因此如果您更改日历格式(在“区域和语言”控制面板中),它会影响Java的日期解析,而不会影响Locale.GetDefault的结果。

这是否是正确的行为是值得商榷的。它似乎没有记录。

答案 1 :(得分:0)

这确实很奇怪。我只是在我的Windows 8机器上尝试了相同的代码,运行jdk1.7.0_09,我得到了一个有效的结果,没有例外。

public static void main(String[] args) {

    try {
        java.util.Date date = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss Z").parse("Wed, 4 Jul 2001 12:08:56 -0700");
        System.out.println("Date: " + date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
}

您是否尝试在try {} catch {}块中包围它以查看异常所说的内容?