У меня есть даты в формате 20Jan2013, 08Aug2012 и т.д. со своими конкретными часовыми поясами. Так, например, 20Jan2013 может иметь идентификатор часовой пояс Австралии/Мельбурна, а 08Aug2012 может иметь идентификатор Европы/Лондона. То, что я хочу сделать, основано на этих часовых поясах и датах, вычислить смещение UTC для этого часового пояса на данную дату. Я придумал это до сих пор:
DateTimeFormatter dtf = DateTimeFormat.forPattern("ZZ");
DateTimeFormatter dtf1 = DateTimeFormat.forPattern("ddMMMYYYY");
DateTimeZone zone = DateTimeZone.forID("Australia/Melbourne");
DateTime thisDate = dtf1.parseDateTime("30Jul2013");
System.out.println("\nZone: " + thisDate.withZone(zone));
Это дает мне результат:
Zone: 2013-07-30T00:00:00.000+10:00
Это правильно, но я хотел бы извлечь только смещение UTC от этого, которое в этом случае равно +10: 00. Я искал способы сделать это, но ничего не могу найти. Есть ли способ сделать это? Единственный вариант, который я вижу, это преобразовать вывод в String и использовать метод подстроки для получения смещения UTC.
В приведенном выше коде учитывается DST (летнее время). Так, например, если бы у меня было: DateTime thisDate = dtf1.parseDateTime( "30Jan2013" );
Выход будет: 2013-01-30T00: 00: 00.000 + 11: 00
(+ 11:00 в конце вместо +10: 00)
Так что в основном все, что мне нужно сделать, это найти способ извлечь +11: 00 с 2013-07-30T00: 00: 00.000 + 11: 00. Пожалуйста, помогите!