使用Java中的AEDT和AEST时区解析日期

我试图解析一串格式

Thu Apr 07 11:45:28 AEST 2016 

进入约会对象。 我的代码如下所示:

 SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy"); try{ Date time = parserSDF.parse("Sat Feb 01 15:00:19 AEDT 2014"); }catch(Exception e){ e.printStackTrace(); } 

但我得到一个’解析错误’。 我无法更改日期的输入格式,我也无法将我的时区设置为静态值,因为此代码将在andorid设备上运行。 如何将此字符串解析为日期?

使用java.time框架( JSR 310 ),您可以:

 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss zzz yyyy"); ZonedDateTime zdt = ZonedDateTime.parse("Sat Feb 01 15:00:19 AEDT 2014", dtf); System.out.println(zdt); 

…打印:

2014-02-01T15:00:19 + 11:00 [澳大利亚/悉尼]

虽然为什么选择悉尼而不是墨尔本我不确定。