Java Calendar: время для часового пояса - PullRequest
2 голосов
/ 20 сентября 2011

Следующие работы (показывают время по Гринвичу)

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
System.out.println(new Date());

, но это не так (показывает местное время)

    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
    System.out.println(cal.getTime());
    System.out.println(new Date());

Есть ли что-то простое, что я пропускаю?

Ответы [ 2 ]

5 голосов
/ 20 сентября 2011

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

Я предлагаю вам использовать DateFormat, что лучше подходит для форматирования дат. Date.toString действительно подходит только для отладки - он не контролирует формат.

В качестве альтернативы, используйте Joda Time для всех ваших операций с датой и временем - это гораздо лучший API для начала:)

1 голос
/ 20 сентября 2011

Чтобы получить дату, отформатированную для другого часового пояса, используйте SimpleDateFormat и установите в нем часовой пояс (по умолчанию он использует местный часовой пояс).

Попробуйте следующим образом:

SimpleDateFormat f = new SimpleDateFormat("dd-MM-yyyy HH:mm:SS Z");
f.setTimeZone(TimeZone.getTimeZone("UTC"));
Calendar cal = Calendar.getInstance();
System.out.println(f.format(cal.getTime()));
System.out.println(new Date());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...