Java日期解析时区导致解析错误
作者:互联网
我收到带有以下代码的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中也是一种好习惯.没有它,您的代码将无法在其他国家/地区使用(例如在法国…).
标签:string-formatting,java,date 来源: https://codeday.me/bug/20191101/1984651.html