Использование времени Joda для получения текущего времени стены для данного часового пояса

Требуется просто получить текущее время стены (, включая правильную настройку DST ) для данный часовой пояс.

Кажется, есть несколько вопросов в SO, витающих вокруг этого, но я не могу найти прямого ответа (в SO, Joda doco или поиске в Google) с низким трением способом получить время стены. Похоже, что с данными входами (текущее время в формате UTC и желаемое TZ) я должен иметь возможность связать пару методов из библиотеки Joda Time, чтобы достичь того, что я хочу, но, похоже, в указанных примерах есть желание оценить + обработать смещения / переходы в коде приложения - я хочу избежать этого, если это возможно, и просто использовать Jodas с максимальной эффективностью на основе его набора доступных статических правил TZ.

Для целей этого вопроса предположим, что я не буду использовать какие-либо сторонние службы (сетевые или другие двоичные файлы), а только те, которые доступны из библиотеки JDK и JodaTime.

Любые указатели приветствуются.

Обновление: На самом деле это была оплошность с моей стороны. У меня было рассчитанное смещение UTC на основе долготы запроса, хотя это работает, очевидно, вам все еще нужна региональная информация, чтобы получить правильную настройку летнего времени.

double aucklandLatitude = 174.730423;
int utcOffset = (int) Math.round((aucklandLatitude * DateTimeConstants.HOURS_PER_DAY) / 360);
System.out.println("Offset: " + utcOffset);

DateTimeZone calculatedDateTimeZone = DateTimeZone.forOffsetHours(utcOffset);
System.out.println("Calculated DTZ: " + calculatedDateTimeZone);
System.out.println("Calculated Date: " + new DateTime(calculatedDateTimeZone));
System.out.println();
DateTimeZone aucklandDateTimeZone = DateTimeZone.forID("Pacific/Auckland");
System.out.println("Auckland DTZ: " +  aucklandDateTimeZone);
System.out.println("Auckland Date: " + new DateTime(aucklandDateTimeZone));

отпечатки

Offset: 12
Calculated DTZ: +12:00
Calculated Date: 2012-02-08T11:20:04.741+12:00

Auckland DTZ: Pacific/Auckland
Auckland Date: 2012-02-08T12:20:04.803+13:00

Итак, здесь, в солнечном Окленде , NZ мы +12, но +13 в период летнего времени.

Моя плохая.Тем не менее спасибо за ответы, которые заставили меня увидеть свою ошибку.

14
задан markdsievers 7 February 2012 в 23:41
поделиться