Вы должны в значительной степени никогда добавить смещение к Date
, чтобы создать другое Date
- вы бы только сделали бы это, если бы получили поврежденные данные, чтобы начать с .
Вы должны не использовать этот код. Это плохой код, который пытается обработать java.util.Date
таким образом, для которого он не предназначен. Если вы хотите представить дату в определенном часовом поясе, используйте Calendar
(urgh) или far лучше Joda Time API.
В частности, полученный вами код будет , а не работать с переходами часового пояса - потому что смещение в date.getTimeZoneOffset()
все еще считает date
UTC (потому что это то, что он определил) даже вы рассматриваете как местную дату / время.
Игнорировать значение, отображаемое Date.toString()
- избегайте использования этого метода. Либо отображайте с использованием SimpleDateFormat
с соответствующими настройками для часового пояса, который вас интересует, либо (лучше, опять же) используйте класс Joda DateTimeFormat
.