Java TimeZone преобразования - PullRequest
       38

Java TimeZone преобразования

0 голосов
/ 31 октября 2011

Я понимаю, что java Date не имеет часового пояса, и попытка установить другой часовой пояс в календаре Java не приведет к преобразованию даты в соответствующий часовой пояс. Поэтому я попробовал следующий код

 public static String DATE_FORMAT="dd MMM yyyy hh:mm:ss";
 public static String CURRENT_DATE_STRING ="31 October 2011 14:19:56 GMT";
 DateFormat dateFormat =  new SimpleDateFormat(DATE_FORMAT);
 dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
 System.out.println(dateFormat.parseObject(CURRENT_DATE_STRING));

но выводит неправильную дату Mon Oct 31 16:19:56, когда она должна быть 12:19:56?

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

Основная проблема здесь в том, что ваша строка формата даты использует чч (12-часовой формат) вместо чч (24-часовой)

Во-вторых, ваш формат даты должен указывать, что ваша строка даты содержит часовой пояс. (В качестве альтернативы вы можете раскомментировать закомментированную строку, чтобы указать правильный часовой пояс).

В-третьих, вы должны использовать DateFormat для вывода времени на экран, а также ...

Наконец, UTC = GMT, поэтому время UTC также составляет 14: 19: 56

(GMT, «Британское зимнее время» совпадает с UTC, тогда как BST на час впереди)

public class DateFormatTest {
    public static String DATE_FORMAT="dd MMM yyyy HH:mm:ss z";
     public static String CURRENT_DATE_STRING ="31 October 2011 14:19:56 GMT";

    public static void main(String[] args) throws ParseException {
         DateFormat dateFormat =  new SimpleDateFormat(DATE_FORMAT);
         //dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
         Date d= dateFormat.parse(CURRENT_DATE_STRING);
         dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
         System.out.println(dateFormat.format(d));
    }
}

Вывод: 31 Oct 2011 14:19:56 UTC

НТН

1 голос
/ 31 октября 2011

Использование Время Joda . Он рекомендуется многими пользователями StackOverflow и хорошо документирован с примерами преобразования часовых поясов.

Удачи!

0 голосов
/ 31 октября 2011

Каков весь выход?Date.toString () должен печатать часовой пояс.Может быть, это не в UTC в вашем случае.

...