0

DB (MySql) に、標準の日付形式の日付を含む単純なテーブルがあります。私はgrailsで簡単な選択を行い、jqgridが取得できるように出力をJSON形式にレンダリングしています。

jqgrid には、次のセル定義があります。

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

画面に表示される予定の日付は 、別の grails gsp 関数から取得した mysqlworkbench に表示される31/03/2013 22:06です。

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

しかし、jqgrid セルには 31/03/2013 21:06が表示されます

今日はサマータイムに入ったので、1時間遅れていることに気づきました。

grails コントローラーからの JSON 日付は 2013-03-31T21:06:45Z です (ここでも時間が欠けているようですが、ログアウトすると grails によって明らかに変換されます)。

gsp formatdate 関数では、mysqlworkbench の場合のようにローカル オフセットを適用しているためです。

オフセットを手動で適用するためにgrailsでJSONを作成するときの解決策はありますか?もしそうなら、これを行う最善の方法は何ですか?JQGridの書式設定オプションに欠けているものがありますか?

4

1 に答える 1

0

他の人々の同様のソリューションを使用してソートしました(明らかに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)
        }
于 2013-04-01T19:56:34.120 に答える