我在两台计算机上运行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环境中发生的原因。有人会有线索吗?
干杯。
答案 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 {}块中包围它以查看异常所说的内容?