Проблема с часовым поясом в Java - PullRequest
3 голосов
/ 28 ноября 2009

Я пытаюсь создать экземпляр GregorianCalendar с TimeZone GMT, но всякий раз, когда я вызываю метод getTime (), он дает мне время в локальном TimeZone. Вот мой код:

Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
System.out.println(cal.getTime());

Вывод, который я получаю, таков:

Sat Nov 28 19:55:49 PKT 2009

Пожалуйста, помогите!

Ответы [ 2 ]

9 голосов
/ 28 ноября 2009

Я не уверен, что это ответит на ваш вопрос, но это один из способов получить «сейчас» в GMT.

import java.text.*
import java.util.* 

Calendar cal = new GregorianCalendar();
Date date = cal.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(formatter.format(date));

См. Javadoc на SimpleDateFormat для различных шаблонов. Кроме того, вы можете рассмотреть Joda Time, поскольку он намного лучше по датам и времени.

6 голосов
/ 28 ноября 2009

Проблема не в GregorianCalendar, а в Date, который используется для форматирования даты / времени для toString для println.

Если вы хотите контролировать форматирование даты, вам нужно создать собственный экземпляр DateFormat - я всегда использую SimpleDateFormat, потому что я довольно разборчив в том, как я хочу, чтобы мои даты выглядели.

Если вас не интересуют подробности форматирования даты, вы также можете использовать один из getInstance... фабричных методов DateFormat.

Вы можете явно setTimeZone на DateFormat (включая, конечно, SimpleDateFormat).

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