提问
我收到带有以下代码的ParseException,但似乎无法修复:String date = "Tue Mar 13 2012 10:48:05 GMT-0400";
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zzzX"); //Tried zzzZ at the end as well
System.out.println(format.parse(date));
如果我在SimpleDateFormat的末尾取出-0400和X(或Z),则一切正常,但是一旦在代码中,就根本不起作用.我应该改用什么符号?我正在使用Java 7.
这是我收到的解析错误:
java.text.ParseException: Unparseable date: "Tue Mar 13 2012 10:48:05 GMT-0400"
at java.text.DateFormat.parse(DateFormat.java:357)
java.text.ParseException: Unparseable date: "Tue Mar 13 2012 10:48:05 GMT-0400"
at java.text.DateFormat.parse(DateFormat.java:357)
at com.throwaway.parse.DateParsing.testDate(TestDate:17)
最佳答案
字符串的GMT-0400的GMT部分引起了问题.Z(或Java 7中的X)参数仅匹配-4000.您必须通过使用单引号将GMT转义:
DateFormat format = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'Z", Locale.US);
请注意,将Local放置在DateFormat中也是一种好习惯.没有它,您的代码将无法在其他国家/地区使用(例如在法国…).