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

时间:2014-03-13 07:13:51

标签: java date web-applications web timezone

    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时间,以便通过我的网络应用程序使其相同...

2 个答案:

答案 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平台只能识别其中一个。