Преобразование даты в Java-приложении

1
    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, чтобы сделать его одним и тем же через мое веб-приложение...

Теги:
date
timezone
web
web-applications

2 ответа

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

Ваш код кажется правильным, но 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

Кажется, он работает правильно :)

Из Док:

Трехбуквенные идентификаторы часовых поясов

Для совместимости с JDK 1.1.x также поддерживаются некоторые другие трехбуквенные идентификаторы часовых поясов (такие как "PST", "CTT", "AST"). Однако их использование устарело, поскольку такое же сокращение используется часто для нескольких часовых поясов (например, "КНТ" может быть "Центральным стандартным временем" США и "Китайским стандартным временем"), и платформа Java может затем распознать только одну из их.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню