JodaTime将DateTime保持为多列

时间:2013-02-26 00:05:51

标签: hibernate grails jodatime

所以这就是我想要做的。我有一个gsp视图,其中包含一些表格,其中包含以下一些示例值:

params.startTime:01:00:00 AM,params.startDate: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而不是US / Central。以下是我的问题:我正在尝试使用不同的方法来保持我的DateTime。如果我只想使用一列来保存日期时间和区域,我该怎么做?如果我的日期 - 时区属性作为单独的参数进入,那么用这三个参数构建DateTime的正确方法是什么?请帮忙!提前谢谢。

1 个答案:

答案 0 :(得分:0)

为了解决此错误,您需要获取时区偏移的UTC值。我相信它通过Joda DateTimeZone给你的输出是美国/芝加哥,美国/东方,美国/太平洋等等,所以如果你想拥有一个自定义价值,如US / Central,你必须为要匹配这些偏移的任何值创建地图。

希望这有帮助!