Преобразование часового пояса «Америка / Лос-Анджелес» в «PST» или «PDT» в Java ME

Мой сервер отправляет мне часовые пояса в формате «America / Los Angeles». На клиенте у меня есть время, которое мне нужно отображать в этом часовом поясе. Ответом будет «тихоокеанское стандартное время» или «тихоокеанское стандартное время», в зависимости от летнего времени в данное время. Как мне сделать это преобразование?

Я использую Java ME (Blackberry 4.7, если быть точным), поэтому я не могу использовать Joda Time.

Мне нужно будет быстро произвести этот расчет для многих дат (но только один часовой пояс), поэтому я не могу просто отправить мне смещение с сервера, потому что смещение может меняться в зависимости от даты.

Изменить: Позвольте мне повторить проблему, потому что, похоже, будет некоторая путаница. Мне дается имя зоны и дата. Я хочу знать смещение от GMT в этом часовом поясе на эту дату. Ответ будет зависеть от летнего времени.

В качестве дополнительного бонуса я хотел бы, чтобы TLA отображался пользователю (например, «PST» или «PDT»), но это вторично.

Решение: Я резюмирую решение здесь, потому что из приведенных ниже ответов оно не очень ясно. По сути, это то, что мне нужно в J2ME:

TimeZone zone = TimeZone.getTimeZone("America/Los_Angeles");
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(zone);

calendar.setTime(new Date(2011, 1, 1, 12, 0, 0));      
System.out.println(zone.getOffset(1, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.DAY_OF_WEEK), calendar.get(Calendar.MILLISECOND)));
calendar.setTime(new Date(2011, 6, 1, 12, 0, 0));
System.out.println(zone.getOffset(1, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.DAY_OF_WEEK), calendar.get(Calendar.MILLISECOND)));
5
задан Dirk Groeneveld 2 February 2011 в 01:59
поделиться