Мы используем SimpleDateFormat userDateFormat = new SimpleDateFormat("yyyy-MM-dd 00:00:00")
в функции моего приложения, не установлены часовой пояс.Java SimpleDateFormat изменить на различные TimeZone
И каждый раз, когда userDateFormat создал, я использую
System.out.println("userDateFormat timezone: " + ((SimpleDateFormat)userDateFormat).getTimeZone().toString());
, чтобы получить информацию о TimeZone 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, который установилTimeZone в 'GMT' (установлен только один раз во всем проекте), но из результата кажется, что используется часовой пояс «CET (UTC + 1)». Есть ли какая-либо настройка сервера, которая вызовет беспорядок в часовом поясе jdk?
Спасибо.
Часовой пояс приложения можно изменить с помощью функции TimeZone # setDefault. Хорошая практика всегда устанавливать TimeZone для каждого SimpleDateFormat явно перед печатью любых значений. – bsiamionau