На самом деле, просто получить объект Calendar, который имеет то же необработанное значение времени, но находится в другой временной зоне, это даже проще, чем это.
Calendar ret = Calendar.getInstance(timeZone);
ret.setTime(calendar.getTime());
return ret;
Но я не уверен, что этого будет достаточно для того, что вам нужно. Всякий раз, когда вы вводите или выводите этот Календарь (или его Дата), стандартные API Java автоматически преобразуют значение обратно в местное время. Операторы JDBC (хотя это также может зависеть от вашего конкретного драйвера JDBC), toString () и т. Д. Например, вместо установки TimeZone в Календаре вам может понадобиться использовать DateFormat с TimeZone.
Если ваш движок веб-службы автоматически преобразует входящее поле типа «дата» в Календарь, у вас могут быть некоторые параметры, особенно если тип поля - это истинный формат даты, а не простая строка.
Трудно сказать больше, не зная, как вам нужно использовать этот преобразованный в TimeZone Календарь.