当前位置: 首页 > 知识库问答 >
问题:

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

萧懿轩
2023-03-14

我在DB(MySql)中有一个简单的表,其中包含标准日期格式的日期。我正在grails中执行一个简单的select,并将输出呈现为JSON格式,以便jqgrid获取。

在jqgrid中,我有以下单元格定义:

{name : 'processedDate',width:110,formatter:'date', formatoptions: {srcformat: 'Y-m-dTH:i:sZ',newformat:'d/m/Y H:i'}}

我希望在屏幕上看到的日期是2013年3月31日22:06,这是我从另一个grails gsp函数获得的mysqlworkbench中显示的日期

<g:formatDate format="dd/MM/yyyy  HH:mm" date="${emailAudit.pollDate}"/>

但jqgrid单元格显示2013年3月31日21:06

我今天才注意到这一点,因为我们已经进入夏令时,所以还有一个小时。

来自grails控制器的JSON日期是2013-03-31T21:06:45Z(同样似乎错过了小时,但当注销时,它显然是由grails转换的)。

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

在grails中创建JSON以手动应用偏移量时,解决方案是什么?如果是,最好的方法是什么?或者JQGrid中的格式化选项中是否有我遗漏的内容?

共有1个答案

谢泉
2023-03-14

使用其他人类似的解决方案(显然来自stackoverflow)对其进行排序。我刚刚在引导数据库中创建了一个对象编组程序来处理日期。它脏兮兮的,感觉不是百分之百的,但它可以工作(并且在我的代码中涵盖了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)
        }
 类似资料:
  • 当我尝试在日期格式选项中使用正确的数据(包括时间,例如:2018-01-01 07:00:00))添加或编辑新行时,我尝试在日期格式选项中使用“newform: Y-m-d H: i: s”总是返回无效的日期警告。 有人能帮我把它正常工作吗? JSFIDLE:链接

  • 问题内容: 我有一个类似的日期/时间字符串,但我想将其转换为,我该怎么做? 我正在使用以下代码,但会引发异常。 问题答案: 您可以执行简单的字符串操作并创建js日期对象。请参见下面的函数,该函数接受// yyyy-mm-dd hh:mm:ss格式的日期

  • 我有一个以下格式的字符串: 我想利用这个时刻。js以这种格式获取它,用于显示。 我试着用这个方法, 哪些错误并表示没有称为“替换”的方法?我是不是走错了路? 我还应该提到,我正在使用一个预打包版本的矩。js,为Meteor打包。js 堆栈跟踪:

  • 我正在尝试将java Date转换为java LocalTime,我的代码如下所示 当我打印对话前后的日期时,看起来是这样的: 它看起来像是在向后转换,但我不知道怎么做!

  • 问题内容: 我的日期格式是,它产生日期: 但我需要这样的日期: 什么日期格式将产生带有冒号的偏移量? 问题答案: 您可以使用这种格式 看看该文档以获取更多信息。 PS:- 正如我的朋友 @Thomas所 提到的,这仅适用于 Java 7 及更高版本。

  • 我尝试在java中使用本地化以本地样式打印日期。我已经使用数字和货币制作了类似的功能,但我未能将相同的行为应用到日期。 正如我在几天前发布此主题时所了解的,GraalVM Quarkus Locale在本机模式下,使用本机模式下的本地化需要使用创建一个“@AutomaticFeature”。 这个技巧适用于数字和货币: 但它不适用于DateTimeFormatter: 在开发模式下一切正常,但在原