7

クライアント(ブラウザー)で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分に解析することはできますが、これを行うためのより簡単な方法はないかと思います。

4

4 に答える 4

4

java.util.DateのgetTimezoneOffset()メソッドを使用できます。非推奨ですが、現在GWTでの日付処理ではかなり一般的です。

そしてAFAIRでは、城田時代の「UTC+4」に似たものを指定できます。

更新:調べてみたところ、「+ 04:00」です。または使用DateTimeZone.forOffsetHours()またはforOffsetMillis()

于 2010-04-27T22:11:46.603 に答える
1

Gwittir(http://www.gwtsite.com)は、データバインディング、アニメーション、リフレクションなどの多くの優れたユーティリティを含むGWTのライブラリです。ただし、新しいJoda Time統合のように、他にも興味深い機能がいくつかあります。GWTのjava.util.Calendarサポートの欠如に不満を感じたことがある場合は、アプリケーションで日付操作を簡単に実行できるため、これを気に入るはずです。

于 2010-04-29T12:27:37.137 に答える
0

私は似ているが少し違う問題を抱えていると思います。

クライアントのタイムゾーンをサーバーに保存して、カレンダーに保存されている日付に関するメッセージを送信できるようにする必要があります。

日付はGoogleAppEngineにUTC時間で保存されます。もちろん、予定を作成するときに現在のタイムゾーンオフセットを保存できます。問題は、たとえば、今後の予定のリストを含む要約メールを送信したい場合に発生します。これらの予定は、クライアントの正しいタイムゾーン調整で相殺する必要があります(予定を作成したときと同じタイムゾーンにあると想定して満足しています)。

実際の問題は夏時間の調整に伴うため、たとえば、2010年10月30日土曜日の午後1時(BST [GMT + 60])と2010年11月1日月曜日の午後1時(GMT)に予定を保存する場合があります。

ご想像のとおり、現在のタイムゾーンオフセット(BST)を使用することはできません。これは、11月1日月曜日の予定が午後1時ではなく午後2時(GMT + 60)として表示されることを意味します。

これに対処する最善の方法は、各予定のタイムゾーンオフセットを個別に保存することですが、最初に元のタイムゾーンを正しく決定してから、javaを使用する方がはるかに良いと思います。正しい調整を行ってください。

于 2010-09-28T13:05:56.823 に答える
0

それ以外の場合は、+&-でタイムゾーンオフセットを取得する他の方法があります。

インポートjava.util.TimeZone;

使用:TimeZone.getDefault()。getRawOffset()

この関数は、携帯電話が見えることについてのオフセット時間をミリ秒単位で返します。たとえば、GMT-04:00は(-4)* 60 * 60 * 1000=-14400000に等しくなります。

あなたが望む数を得るためにいくつかの操作の後。

于 2010-04-29T02:28:52.357 に答える