У меня есть следующая проблема, которая появилась, когда я установил войну моего веб-приложения на виртуальный сервер Linux. Вот оно: системное время моего сервера кажется правильным, фактически ввод даты на оболочке:
Mon Apr 11 11:47:30 CEST 2011
которое является моим "временем настенных часов". Даже MySQL работает нормально, если я выберу сейчас (), я получу:
mysql> select now()
-> ;
+---------------------+
| now() |
+---------------------+
| 2011-04-11 11:52:57 |
+---------------------+
1 row in set (0.01 sec)
Но мое приложение (Spring + hibernate на Java6 + tomcat 6) будет сохранять каждую дату в БД с часовым поясом по Гринвичу (и время корректно компенсируется разницей с GMT, что хорошо). Теперь проблема в том, что я получаю все даты, отображаемые с GMT, даже если я делаю:
static final DateFormat format = new SimpleDateFormat(
"dd/MM/yyyy 'alle' HH:mm", Locale.ITALY);
Я не получаю правильное смещение часов, но они остаются в GMT, и они показывают GMT, если я добавлю Z (который отображает часовой пояс) в шаблон.
В Windows вместо этого у меня были значения даты, сохраненные в моем родном часовом поясе на mySQL. Так что на моей машине Windows, где я разрабатываю, у меня будут все даты в CEST. Это раздражает, так как я не знаю, как предсказать поведение системы, и мне приходится делать скучные тесты и выяснять, как это изменить.
Вы когда-нибудь видели эту проблему? Как с этим бороться?