所以这就是我想要做的。我有一个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的正确方法是什么?请帮忙!提前谢谢。
答案 0 :(得分:0)
为了解决此错误,您需要获取时区偏移的UTC值。我相信它通过Joda DateTimeZone给你的输出是美国/芝加哥,美国/东方,美国/太平洋等等,所以如果你想拥有一个自定义价值,如US / Central,你必须为要匹配这些偏移的任何值创建地图。
希望这有帮助!