2013-02-26 5 views
1

Итак, вот что я пытаюсь сделать. У меня есть вид gsp с формой, в которой размещаются следующие значения с некоторыми примерными значениями:JodaTime Persisting DateTime как несколько столбцов

params.startTime: 01:00:00 AM, params.start Дата: 2013-01-01, params.timeZone: US/Central

Вот некоторый код из моего домена класса

class MyClass { 
    DateTime startDate 
    } 
    static mapping { 
    startDate type: PersistentDateTimeWithZone, { 
     column name: "start_date_time" 
     column name: "start_date_zone" 
    } 

И вот какие-то коды из моего контроллера

//This is a service i created to return the UTC id of a long time zone 
    def tzs = new TimeZoneService() 
    params.timeZone = tzs.getTimeZoneId(params.timeZone)  
    def startTimeZone = DateTimeZone.forID(params.timeZone) 

    def startDate = new DateTime(params.startDate + "T" + params.startTime, startTimeZone) 

Это то, что это выглядит как в моей базе данных:

start_date_time: 2013-01-01 01:00:00 
    start_date_zone: -06:00 

Так вот в чем проблема. Когда я форматировать STARTTIME со следующим рисунком

DateTimeFormatter fmt = DateTimeFormat.forPattern("MMM dd, yyyy h:mm a z"); 

Мой часовой пояс придумывает, как -06: 00, а не США/Central. Вот мои вопросы: я пробую разные подходы к сохранению своего DateTime. Если я хочу просто использовать один столбец, чтобы сохранить дату и зону вместе, как бы я это сделал? Если мои свойства для зоны даты и времени входят в качестве отдельных параметров, каков правильный способ создания DateTime с этими тремя параметрами? Пожалуйста помоги! Заранее спасибо.

ответ

0

Чтобы исправить эту ошибку, вам необходимо получить значение UTC для смещения часового пояса. Я считаю, что результат, который он дает вам через Joda DateTimeZone, - это Америка/Чикаго, Америка/Восточная, Америка/Тихоокеанский регион и т. Д., Поэтому, если вы хотите иметь пользовательскую ценность, такую ​​как US/Central, вам придется создать карту для любых значений, которые вы хотите сопоставить с этими смещениями.

Надеюсь, это поможет!