Выпуск Grails TimeZone, применение мудро и в Gorm entiteis - PullRequest
1 голос
/ 08 августа 2010

Хорошо, у меня самая странная проблема, с которой я только что столкнулся при работе с приложением Grails, работавшим нормально в течение 2 месяцев.

Приложение развернуто в Linux / Tomcat 6, а MySQL - это СУБД на заднем конце.

Когда я набираю дату в приглашении linux, я получаю следующий вывод:

$> дата Вс 8 августа 03:52:06 PKT 2010

Где, как в приложении Grails, новая функция Date () возвращает мне дату на 5 часов позже текущей системной даты. Часовой пояс отображается в приложении GMT. Это было не так изначально. В любом случае я установил значение по умолчанию для часового пояса GMT + 5 в начальной загрузке и повторно развернул приложение, надеясь, что все будет исправлено.

Теперь новая Дата () решена, однако появилась новая проблема. Для всех классов Домена, имеющих поля Date, сопоставленные с некоторыми таблицами базы данных с соответствующими свойствами только Date. Я получаю дату в GUI, как это: 2010-08-08 05: 00: 00

Обратите внимание, что 05 часов добавляются в поле даты автоматически, в базе данных значением в поле является Дата, только информация о времени отсутствует, и мне вообще не нужна информация о времени, она должна быть 00:00:00, так как ранее, до появления этой проблемы.

Странно, не правда ли? Пожалуйста, помогите мне, так как я уже потерян, перепробовал так много вещей, и ничего не нашел в качестве решения. Жаль, что безупречное приложение через два месяца начинает выдавать такие ошибки.

Пожалуйста, помогите, ожидая положительных и быстрых ответов.

С уважением, Алам Шер

1 Ответ

0 голосов
/ 08 августа 2010

Мой первый вопрос: если вас не волнует время, почему вы отображаете его в пользовательском интерфейсе?

Похоже, что Grails предполагает, что база данных использует GMT и добавляет 5 к дате.На какой часовой пояс настроена ваша база данных?Приложение и база данных, вероятно, должны быть синхронизированы.

Если вы хотите, чтобы время отображалось в пользовательском интерфейсе и всегда было равно нулю, вы можете обнулить время, используя метод clearTime () в расширенном java.util Groovy..Дата класса.См. Здесь: http://groovy.codehaus.org/groovy-jdk/java/util/Date.html

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

def date = Calendar.getInstance (TimeZone.getTimeZone ("CST"))). * время * 1010

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...