0

我在两台计算机上运行一个程序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.getDefaulten_US在两台计算机上返回。

java -version1.6.0_65在 Mac上返回,1.7.0_21在 Windows 计算机上抛出ParseException.

我完全不知道为什么ParseException会发生在 Windows 环境中。有人会有线索吗?

干杯。

4

2 回答 2

1

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

这是否是正确的行为是有争议的。它似乎没有记录在案。

于 2013-10-17T19:40:07.257 回答
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 {} 块中将其包围以查看异常的含义?

于 2013-10-16T22:34:56.023 回答