【问题标题】:JQGrid date formatter not applying local time offset correctly : GrailsJQGrid 日期格式化程序未正确应用本地时间偏移:Grails
【发布时间】:2013-03-31 21:32:09
【问题描述】:

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

【问题讨论】:

  • 使用其他人的类似解决方案对其进行排序(显然来自stackoverflow)。我刚刚在引导程序中创建了一个对象编组器来处理日期。

标签: date grails jqgrid formatting timezone


【解决方案1】:

使用其他人的类似解决方案对其进行排序(显然来自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)
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多