Лично я бы использовал Joda Time :
DateTimeZone zone = ...;
DateTime dateTime = new DateTime(date.getTime(), zone);
Joda Time - намного лучший API для даты и времени, чем встроенный, но он тоже будет работать:
TimeZone zone = ...;
Calendar calendar = Calendar.getInstance(zone);
calendar.setTime(date);
Я не будет использовать (не рекомендуется) конструктор Date
. Во-первых, он не делает то, что, как вы думаете, он делает ... это:
new Date(2012,03,02,11,30,0);
создает значение, представляющее 2 февраля в году 3912 ...
Это не будет проблемой, если вы извлекаете Date
из базы данных, но, очевидно, это повлияет на юнит-тестирование. Вы действительно должны избегать всех осуждаемых членов Date
- они устарели по уважительной причине.