我在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中的格式化选项中是否存在我缺少的内容?
答案 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)
}