2015-02-07 2 views
0

Для получения смещение часового пояса Сингапура, если я пытаюсь «Сингапур», как ID, я буду получать правильный, как, как показано ниже:Java- получить TimeZone от ID

TimeZone timeZone = TimeZone.getTimeZone("Singapore"); 
    int offset = timeZone.getRawOffset();//It prints 28800000 which is correct 

Но если попытка SGT вместо Сингапура как ниже, он возвращает смещение GMT, потому что он не понимает, как SGT ID:

TimeZone timeZone = TimeZone.getTimeZone("SGT"); 
    int offset = timeZone.getRawOffset();//It prints 0 which is incorrect and should be 28800000 

Любым способ для получения правильного смещения для Сингапура с помощью «SGT» вместо «Сингапура» ????

Выше выпуска не выпускается для удостоверения личности «Америка/Лос-Анжелес». «PST» и «America/Los_Angeles» возвращают такое же смещение.

С уважением

EDITED--

Если у меня есть дата, как "2015-02-08 11:18 SGT", то ?????

Я все еще не могу получить компенсацию за «Сингапур», используя вышеуказанную дату?

Попытка получить, как я могу сделать возможным.

ответ

2

Не все идентификаторы Трехбуквенные, кажется, поддерживается, как указано в документации:

Для совместимости с JDK 1.1.x, некоторых других идентификаторов три буквы часового пояса (например, «PST »,« CTT »,« AST »). Однако их использование устарело [...]

0

Как говорит @duckstep, поддерживается лишь несколько коротких имен.

Таким образом, вы должны использовать Asia/Singapore, например:

Код:

TimeZone timeZone = TimeZone.getTimeZone("Asia/Singapore"); 
System.out.println(timeZone.getID()); 
System.out.println(timeZone.getRawOffset()); 
System.out.println(timeZone.getDisplayName(false, TimeZone.LONG)); 
System.out.println(timeZone.getDisplayName(false, TimeZone.SHORT)); 
System.out.println(timeZone.getDisplayName(true, TimeZone.LONG)); 
System.out.println(timeZone.getDisplayName(true, TimeZone.SHORT)); 

Выход:

Asia/Singapore 
28800000 
Singapore Time 
SGT 
Singapore Summer Time 
SGST 
+0

Можем ли мы получить результат как 'Азия/Singapore' когда это мы даем 'TimeZone.getTimeZone (« SGT »)'? –

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