2014-10-27 4 views
1

Учитывая в DateTimeZone, я могу получить имя и идентификатор TimeZone так:Преобразовать DateTimeZone к UTC Offset

DateTimeZone timeZone = new DateTimeZone("America/Chicago"); 

// Prints "America/Chicago" 
System.out.println(timeZone.getID()); 

// Prints "CDT" (Since it is daylight savings time now) 
System.out.println(timeZone.getNameKey(DateTimeUtils.currentTimeMillis())); 

// Prints "Central Daylight Time" 
System.out.println(timeZone.getName(DateTimeUtils.currentTimeMillis())); 

Все это прекрасно, но я действительно хотел бы получить часовой пояс как UTC смещение. В этом случае смещение UTC будет выглядеть как -05:00

Как это сделать с помощью Joda-Time?

+0

Я считаю, что [это] (http://stackoverflow.com/a/19632076/2055998) отвечает на ваш вопрос. –

+2

[Часовой пояс! = Смещение] (http://stackoverflow.com/tags/timezone/info) –

+0

http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTimeZone.html#UTC –

ответ

1

Чистый Joda-решение выглядит так:

int offsetMillis = 
    DateTimeZone.forID("America/Chicago").getOffset(DateTimeUtils.currentTimeMillis()); 
DateTimeZone zone = DateTimeZone.forOffsetMillis(offsetMillis); 
String utcOffset = zone.toString(); 
System.out.println(utcOffset); // output: -05:00 
0

Вы можете использовать Date, SimpleDateFormat и TimeZone для достижения того, чего вы хотите. Сделайте SimpleDateFormat, установив TimeZone, который вы хотите. А затем использовать его для форматирования new Date();

Смежные вопросы