打算把以下字符串“ss = "Fri, 18 Jun 2010 12:25:34 +0000”,转换成Date格式对象,发现老是报错。
原来用的simpledateformate对象这样生成的。
SimpleDateFormat ee = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z")
一直报错,后来才发现涉及到本地化的问题,也就是你如果在美国并且用英文版本的win7是可以正常运行这段代码的。但在中国是不行的。中国需要用到这样的构造方法。
SimpleDateFormat ee = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", new DateFormatSymbols(Locale.US));
Locale.US是关键点哦。
当然这个问题还有另外一种解决方法,就是java运行时候,你给jvm指定locale的值。
-Duser.language=en -Duser.country=US
完整的测试代码如下:
SimpleDateFormat ee = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", new DateFormatSymbols(Locale.US));
String ss = ee.format(Calendar.getInstance().getTime() );
System.out.println(ss);
ss = "Fri, 18 Jun 2010 12:25:34 +0000";
Date d = ee.parse(ss);
System.out.println("date: " + d );