Как преобразовать часовой пояс системы в часовой пояс пользователя - PullRequest
0 голосов
/ 29 августа 2011

У меня есть значение Timestamp, которое приходит из моего приложения. Пользователь может находиться в любом заданном локальном часовом поясе.

Эта дата используется для веб-сервиса, и система, независимо от того, в каком часовом поясе находится пользователь, всегда выбирает часовой пояс сервера (в США), мне нужно преобразовать параметр из системы в пользователя. Я попробовал этот подход:

/**
  * Adapt calendar to client time zone. 
  * @param calendar - adapting calendar   
  * @param timeZone - client time zone   
  * @return adapt calendar to client time zone   
*/  
public static Calendar convertCalendar(final Calendar calendar, 
                                       final TimeZone timeZone){
   Calendar ret = new GregorianCalendar(timeZone); 
   ret.setTimeInMillis(calendar.getTimeInMillis() +
     timeZone.getOffset(calendar.getTimeInMillis()) -
     TimeZone.getDefault().getOffset(calendar.getTimeInMillis())); 
   ret.getTime();      
   return ret; 
 }   

На моем компьютере показана синтаксическая ошибка, в которой говорится, что объявление "public static Calendar convertCalendar (Calendar calendar, TimeZone timeone)" имеет синтаксическую проблему.

Я использую JDK 1.3. Я не уверен, что мне не хватает.

Может ли кто-нибудь улучшить мое понимание этой концепции?

1 Ответ

1 голос
/ 29 августа 2011

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

Calendar ret = Calendar.getInstance(timeZone);
ret.setTime(calendar.getTime());
return ret;

Но я не уверен, что этого будет достаточно для того, что вам нужно. Всякий раз, когда вы вводите или выводите этот Календарь (или его Дата), стандартные API Java автоматически преобразуют значение обратно в местное время. Операторы JDBC (хотя это также может зависеть от вашего конкретного драйвера JDBC), toString () и т. Д. Например, вместо установки TimeZone в Календаре вам может понадобиться использовать DateFormat с TimeZone.

Если ваш движок веб-службы автоматически преобразует входящее поле типа «дата» в Календарь, у вас могут быть некоторые параметры, особенно если тип поля - это истинный формат даты, а не простая строка.

Трудно сказать больше, не зная, как вам нужно использовать этот преобразованный в TimeZone Календарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...