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”中的异常java.text.ParseException:Unparseable date:“13/03/2014 16:56:46 AEDT” 在java.text.DateFormat.parse(DateFormat.java:337)
请帮助我......
我需要将用户的时间转换为我的UTC时间,以便通过我的网络应用程序使其相同...
答案 0 :(得分:1)
这意味着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);
答案 1 :(得分:1)
您的代码似乎是正确的,但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平台只能识别其中一个。