クライアント(ブラウザー)でGWTを使用し、サーバーでJodaTimeを使用しています。ユーザー(つまりブラウザー)のタイムゾーンに基づいた時間境界を使用して、リクエストが受信される日(つまり、00:00:00から23:59:59まで)に制限されたDBルックアップを実行したいと思います。
だから私はGWTコードnew java.util.Date()
にリクエストの時間を取得してサーバーに送信するように指示します。次に、JodaTimeを次のように使用します。
new DateTime(clientDate).toDateMidnight().toDateTime()
もちろん問題はtoDateMidnight()
、指定されたTimeZoneがない場合、システム(つまりサーバー)のTimeZoneを使用することです。私は、TimeZoneをブラウザからサーバーに渡す簡単な方法を見つけることを試みてきました。GWTでは、GMTオフセットを次のように取得できます。
DateTimeFormat.getFormat("Z").fmt(new Date())
その結果、「-0400」のようになります。しかし、Joda TimeDateTimeZone.forID()
は、「America / New_York」のような形式の文字列、または時間と分の整数引数を必要としています。もちろん、「-0400」を-4時間0分に解析することはできますが、これを行うためのより簡単な方法はないかと思います。