Java SimpleDateFormat изменить на другой часовой пояс

Мы используем SimpleDateFormat userDateFormat = new SimpleDateFormat("yyyy-MM-dd 00:00:00")в функции моего приложения, не установили часовой пояс .

И каждый раз, когда userDateFormat создан, я использую

System.out.println("userDateFormat timezone: " + ((SimpleDateFormat)userDateFormat).getTimeZone().toString()); 

чтобы получить информацию о часовом поясе userDateFormat.

Во время работы приложения с различными вызовами функции (сервер не выключен), мы получаем различную информацию о часовом поясе:

userDateFormat timezone: sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

userDateFormat timezone: sun.util.calendar.ZoneInfo[id="Europe/Copenhagen",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=133,lastRule=java.util.SimpleTimeZone[id=Europe/Copenhagen,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]

Мне интересно, почему часовой пояс был изменен здесь, на этом одном сервере.

И у нас есть еще один SimpleDateFormat объект, который имеет setTimeZone ‘GMT'(только один раз во всем проекте), но из результата, кажется, использовать часовой пояс ‘CET(UTC+1)’. Есть ли какие-либо настройки сервера, которые вызовут беспорядок в часовом поясе jdk?

Спасибо.

1 ответ

  1. Как сказал bsiamionau, у нас есть код, который вызывает часовой пояс.setDefault, которые изменяют часовой пояс по умолчанию.