Получите время в Лондоне

Как я могу добраться, текущая локальная стена показывают время (в количестве millis с 1 января 1970) в Лондоне? Так как мое приложение может работать на сервере в любом месте, я думаю, что должен использовать TimeZone "Европы/Лондона". Я также должен принять Переход на летнее время во внимание, т.е. приложение должно добавить час в течение "лета".

Я предпочел бы использовать стандарт java.util библиотеки.

Это корректно?

TimeZone tz = TimeZone.getTimeZone("Europe/London") ;
Calendar cal = Calendar.getInstance(tz);
return cal.getTime().getTime() + tz.getDSTSavings();

Спасибо

5
задан Lance Roberts 27 May 2010 в 21:02
поделиться

2 ответа

Я не уверен, что представляет собой это количество, поскольку "число миллисекунд с 1 января 1970 года" не зависит от местоположения или перехода на летнее время. Но, возможно, этот расчет будет вам полезен:

TimeZone london = TimeZone.getTimeZone("Europe/London");
long now = System.currentTimeMillis();
return now + london.getOffset(now);

Для большинства приложений лучше использовать либо время UTC, либо местное время; на самом деле это ни то, ни другое. Вы можете получить время UTC и время в определенной зоне следующим образом:

Instant now = Instant.now(); /* UTC time */
ZonedDateTime local = now.atZone(ZoneId.of("Europe/London"));
12
ответ дан 18 December 2019 в 09:06
поделиться

Другие говорили, что это может быть не очень хорошей идеей - я считаю, что это зависит от вашей ситуации, но использование UTC, безусловно, стоит рассмотреть.

Однако, я думаю, вы кое-что упустили: количество секунд, прошедших с 1 января 1970 года UTC (именно так всегда определяется эпоха в Unix - и фактически это то же самое, что и в Лондоне, поскольку смещение на эту дату было равно 0), можно получить с помощью любого из этих выражений:

System.currentTimeMillis()
new Date().getTime()
Calendar.getInstance().getTime().getTime()

Если подумать, количество миллисекунд с этого конкретного момента не меняется в зависимости от того, в каком часовом поясе вы находитесь.

О, и обычное предложение - для гораздо лучшего API даты и времени, смотрите Joda Time.

4
ответ дан 18 December 2019 в 09:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: