【问题标题】:Date Conversion In java Web ApplicationJava Web 应用程序中的日期转换
【发布时间】:2014-04-17 18:33:49
【问题描述】:
    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 但它给了我例外:

线程“主”java.text.ParseException 中的异常:无法解析的日期:“13/03/2014 16:56:46 AEDT” 在 java.text.DateFormat.parse(DateFormat.java:337)

请帮帮我....

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

【问题讨论】:

    标签: java date web-applications web timezone


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

      您的代码似乎是正确的,但 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

      它似乎工作正常:)

      来自文档:

      三个字母的时区 ID

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 1970-01-01
        相关资源
        最近更新 更多