我在数据库(MySql)中有一个简单的表,其中包含标准日期格式的日期。我正在grails中做一个简单的选择,并将输出呈现为JSON格式,以便jqgrid拾取。
在jqgrid中,我有以下单元格定义:
{name : 'processedDate',width:110,formatter:'date', formatoptions: {srcformat: 'Y-m-dTH:i:sZ',newformat:'d/m/Y H:i'}}
我希望在屏幕上看到的日期是31/03/2013 22:06这是在mysqlworkbench中显示的这是我从另一个grails gsp函数
中得到的<g:formatDate format="dd/MM/yyyy HH:mm" date="${emailAudit.pollDate}"/>
但是显示jqgrid单元格 31/03/2013 21:06
我今天才注意到这一点,因为我们已经进入夏令时,所以它是一个小时。
来自grails控制器的JSON日期是 2013 - 03 - 31 t21:06:45z (似乎又错过了一个小时,但当注销时,它显然是由grails转换的)。
现在,因为在gsp formatdate函数中,它应用了本地偏移量,就像mysqlworkbench的情况一样。
在grails中创建JSON时手动应用偏移量的解决方案是什么,如果是这样,最好的方法是什么,或者在JQGrid中的格式选项中是否有我缺少的东西?
使用其他人类似的解决方案进行排序(显然来自stackoverflow)。我刚刚在引导程序中创建了一个对象编组器来处理日期。它很脏,感觉不是100%,但它是有效的(并且涵盖了我代码中的所有日期到JSON区域),现在必须这样做。欢迎提出任何其他建议,我相信肯定有比这更好的方法。
import grails.converters.JSON;
class BootStrap {
def init = { servletContext ->
JSON.registerObjectMarshaller(Date) {
TimeZone tz = TimeZone.getDefault();
def dateFormat = 'yyyy/MM/dd HH:mm'
return it?.format(dateFormat,tz)
}