JQGrid日期格式化程序没有正确应用本地时间偏移:Grails

时间:2013-03-31 21:32:09

标签: date grails jqgrid formatting timezone

我在DB(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-31T21:06:45Z (再次似乎错过了小时,但是当它退出时显然由grails转换为某种方式)。

现在因为在gsp formatdate函数中它应用了本地偏移量,就像mysqlworkbench一样。

在grails中创建JSON时是否可以手动应用偏移量,如果是这样,最好的方法是什么?或者JQGrid中的格式化选项中是否存在我缺少的内容?

1 个答案:

答案 0 :(得分:0)

使用其他人类似的解决方案(显然来自stackoverflow)对其进行排序。我刚刚在bootstrap中创建了一个对象marshaller来处理日期。它的脏和不感觉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)
        }