我面临一个奇怪的问题,即grails 3次绑定。我有一个简单的域,如下所示
import java.sql.Time
class Marathon {
String name
String location
Time startTime
static constraints = {
}
}
在引导程序中,我将默认时区设置为美国/山脉
TimeZone.setDefault(TimeZone.getTimeZone("US/Mountain"))
这是可转换时间的自定义数据转换器
import grails.databinding.converters.ValueConverter
import java.text.SimpleDateFormat
class TimeConverter implements ValueConverter {
static final String TIME_FORMAT = "h:mm a"
boolean canConvert(value) {
value instanceof String
}
def convert(value) {
def timeZone = TimeZone.getTimeZone('US/Mountain')
def formatter = new SimpleDateFormat(TIME_FORMAT.replace('yyyy', 'yy'))
if (timeZone) formatter.setTimeZone(timeZone)
return new java.sql.Time(formatter.parse(value).getTime())
}
Class<?> getTargetType() {
java.sql.Time
}
}
这是问题。
时间在数据库中存储正确。即当我将通过10:00 AM的记录保存为时间参数时,它将保存为10:00:00
但是当我检索记录并在视图中显示时间时,显示的时间是21:30:00,这是9:30 PM,这是不正确的。是什么原因导致这种自动时间转换?感谢您的帮助。我正在使用grails 3.3.8。