JQGrid格式化日期返回错误的日期

时间:2011-10-27 13:51:48

标签: jquery xml jqgrid

我正在使用JQGrid来显示我的数据(服务器返回xml)。数据似乎没问题:

<aux>
   <sessao>181092</sessao>
   <codFuncionario>13574</codFuncionario>
   <dataMarcacao class="sql-date">2011-10-15</dataMarcacao>
   <sequencia>1</sequencia>
   <seqHe/>
   <codPagamento/>
   <seqOcorrencia>0</seqOcorrencia>
   <tipoOcorrencia/>
  <diaSemana>SAB</diaSemana>
</aux>
<aux>
  <sessao>181092</sessao>
  <codFuncionario>13574</codFuncionario>
  <dataMarcacao class="sql-date">2011-10-16</dataMarcacao>
  <sequencia>1</sequencia>
  <seqHe/>
  <codPagamento/>
  <seqOcorrencia>0</seqOcorrencia>
  <tipoOcorrencia/>
  <diaSemana>DOM</diaSemana>
  <inconsistencias>FALTA DIA</inconsistencias>
</aux>

在网格的初始化中,我设置了格式:

colModel:[ {name: 'dataMarcacao',
            index: 'dataMarcacao',
            width: 60,
            formatter: 'date',
            formatoptions: {newformat: 'd/m/Y', datefmt: 'Y-m-d'}},

我不明白的是,网格显示15/10/2011两次,而不是16/10/2011。

我该如何调试?也许是JQGrid的bug?

我也试试:

colModel:[ {name: 'dataMarcacao',
            index: 'dataMarcacao',
            width: 60,
            formatter: 'date',
            formatoptions: {newformat: 'Y-m-d', datefmt: 'Y-m-d'}},

这会得到相同的错误结果。

2 个答案:

答案 0 :(得分:2)

SérgioMichels在他自己的问题中回答了这个问题,我在下面清理了它:

这似乎是PDT的一个错误。 Firebug显示了时间戳:

  • Date {Sat Oct 15 2011 00:00:00 GMT-0300 (Hora oficial do Brasil)}

  • Date {Sat Oct 15 2011 23:00:00 GMT-0300 (Hora oficial do Brasil)} - 这应该是10月16日!

  • Date {Mon Oct 17 2011 00:00:00 GMT-0200}

我发现问题与SO和JavaScript对象Date有关。在Windows中,当您打开选项以自动更新时钟时,对象“日期”会在夏令时中将您的日期减去一小时。

要解决此问题,请在第4667行编辑jquery.jqGrid.src.js

j = timestamp.getUTCDate()

而不是j = timestamp.getDate()

答案 1 :(得分:0)

在grid.locale中,js将userLocalTime更改为true。这将给出本地时区