1

これが私がやろうとしていることです。私はいくつかの例の値で以下を投稿しているフォームを持つ gsp ビューを持っています:

params.startTime: 01:00:00 AM、params.startDate: 2013-01-01、params.timeZone: US/Central

これが私のドメインクラスのコードです

    class MyClass {
     DateTime startDate
    }
    static mapping {
     startDate type: PersistentDateTimeWithZone, {
      column name: "start_date_time"
      column name: "start_date_zone"
    }

そして、ここに私のコントローラーからのいくつかのコードがあります

    //This is a service i created to return the UTC id of a long time zone
    def tzs = new TimeZoneService()
    params.timeZone = tzs.getTimeZoneId(params.timeZone)    
    def startTimeZone = DateTimeZone.forID(params.timeZone)

    def startDate = new DateTime(params.startDate + "T" + params.startTime, startTimeZone)

これは私のデータベースでは次のようになります。

    start_date_time: 2013-01-01 01:00:00 
    start_date_zone: -06:00

ここで問題です。次のパターンで startTime をフォーマットすると

    DateTimeFormatter fmt = DateTimeFormat.forPattern("MMM dd, yyyy  h:mm a z");

私のタイムゾーンは、US/Central ではなく、-06:00 と表示されます。私の質問は次のとおりです。DateTime を永続化するためのさまざまなアプローチを試しています。1 つの列だけを使用して日時とゾーンを一緒に保持したい場合、どうすればよいでしょうか? date-time-zone のプロパティが個別のパラメーターとして入ってくる場合、これら 3 つのパラメーターを使用して DateTime を作成する正しい方法は何ですか? 助けてください!前もって感謝します。

4

1 に答える 1

0

このエラーを修正するには、タイム ゾーン オフセットの UTC 値を取得する必要があります。Joda DateTimeZone を介して得られる出力は、America/Chicago、America/Eastern、America/Pacific などであると思いますが、US/Central などのカスタム値が必要な場合は、作成する必要があります。これらのオフセットに一致させたい値をマップします。

お役に立てれば!

于 2013-03-15T15:43:32.743 に答える