0

我在数据库(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,这是我从另一个 grails gsp 函数获得的 mysqlworkbench 中显示的日期

<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 中的格式化选项中是否有我遗漏的东西?

4

1 回答 1

0

使用其他人的类似解决方案对其进行排序(显然来自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)
        }
于 2013-04-01T19:56:34.120 回答