所以这就是我想要做的。我有一个gsp视图,其中包含以下示例值的表单:JodaTime坚持DateTime多列
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。如果我想只使用一列来保存日期时间和区域,我该怎么做?如果我的date-time-zone属性作为单独的参数出现,那么用这三个参数构建DateTime的正确方法是什么?请帮忙!提前致谢。