2016-12-29 2 views
0

Мы используем 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?

Спасибо.

+1

Часовой пояс приложения можно изменить с помощью функции TimeZone # setDefault. Хорошая практика всегда устанавливать TimeZone для каждого SimpleDateFormat явно перед печатью любых значений. – bsiamionau

ответ

0

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