2011-10-27 85 views
2

我正在使用JQGrid顯示我的數據(服務器返回xml)。這些數據似乎是OK:JQGrid格式化日期返回錯誤日期

<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

·塞爾吉奧·米歇爾斯在他自己的問題回答了這個問題,我清理了如下:

這似乎是PDT的錯誤。螢火蟲顯示的時間戳:

  • 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中,當您打開選項以自動更新時鐘時間時,對象「Date」在夏令時中返回您的日期減去一小時。

爲了解決這個問題我編輯jquery.jqGrid.src.js上線4667:

j = timestamp.getUTCDate() 

代替j = timestamp.getDate()

0

在grid.locale js中將userLocalTime更改爲true。這將給當地時區