Java Web应用程序中的日期转换

String date1 = "13/03/2014 16:56:46 AEDT"; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss z"); sdf.setTimeZone(TimeZone.getTimeZone("GMT+12")); java.util.Date convertedDate = (java.util.Date) sdf.parse(date1); SimpleDateFormat outFormatter = new SimpleDateFormat("EE MMM dd yyyy HH:mm:ss z"); outFormatter.setTimeZone(TimeZone.getTimeZone("GMT+12")); String output = outFormatter.format(convertedDate); System.out.println("Date in NZ Timezone : " + output); 

我试图将AEDT日期转换为dd / MM / yyyy HH:mm:ss z但是它给了我例外:

线程“main”中的exceptionjava.text.ParseException:Unparseable date:“13/03/2014 16:56:46 AEDT”at java.text.DateFormat.parse(DateFormat.java:337)

请在这件事上给予我帮助….

我需要将用户的时间转换为我的UTC时间,以便通过我的网络应用程序使其相同…

这意味着Java不支持AEDT缩写,但由于你知道时区偏移,你可以这样做

 SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("GMT+12")); java.util.Date convertedDate = (java.util.Date) sdf.parse(date1); 

您的代码似乎是正确的,但AEDT不是有效的通用时区。 这就是java.text.ParseException的原因。 相反,你可以这样做:

 String date1 = "13/03/2014 16:56:46 "+TimeZone.getTimeZone("GMT-11").getID(); 

输入:

13/03/2014 16:56:46 GMT+12:00

输出:

Date in NZ Timezone : Fr Mrz 14 2014 15:56:46 GMT+12:00

它似乎工作正常:)

来自Doc’s:

三个字母的时区ID

为了与JDK 1.1.x兼容,还支持其他一些三字母时区ID(例如“PST”,“CTT”,“AST”)。 但是,它们的使用已被弃用,因为相同的缩写通常用于多个时区(例如,“CST”可能是美国“中央标准时间”和“中国标准时间”),然后Java平台只能识别其中一个他们。