Java SimpleDateFormat Неправильный часовой пояс после разбора - PullRequest
6 голосов
/ 31 октября 2011

Почему, когда я даю входную строку даты с часовым поясом GMT, SimpleDateFormat анализирует ее и выводит часовой пояс EET?</p> <pre><code>public static String DATE_FORMAT="dd MMM yyyy hh:mm:ss z"; public static String CURRENT_DATE_STRING ="31 October 2011 11:19:56 GMT"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); System.out.println(simpleDateFormat.parseObject(CURRENT_DATE_STRING));

И вывод: Пн 31 октября 13:19:56 EET 2011, а не Пн 31 октября 13:19:56 GMT 2011

1 Ответ

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

Вы распечатываете результат Date.toString().A Date не имеет никакого понятия о часовом поясе - это просто количество миллисекунд с начала UTC Unix.Date.toString() всегда использует системный часовой пояс по умолчанию.

Обратите внимание, что вы не должны ожидать "Пн 31 октября 13:19:56 GMT 2011", учитывая, что вы даливремя, которое указывает часовой пояс GMT 11, а не 13.

Если вы хотите использовать определенный часовой пояс для печати, вы должны использовать другой DateFormat для печати, а не Date.toString().(Date.toString() продолжает вызывать замешательство, как это; это действительно неудачно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...