私のJavaWebアプリケーションが米国にデプロイされている場合、クライアントの国に関係なく米国の時間を取得します。ただし、クライアントがインドにいる場合は、タイムゾーン、ロケール、またはユーザー設定を使用して、インドの時間を取得する必要があります。私は何をすべきか?
誰か助けてくれませんか。
私のJavaWebアプリケーションが米国にデプロイされている場合、クライアントの国に関係なく米国の時間を取得します。ただし、クライアントがインドにいる場合は、タイムゾーン、ロケール、またはユーザー設定を使用して、インドの時間を取得する必要があります。私は何をすべきか?
誰か助けてくれませんか。
ユーザーの IP アドレスで国を特定します ( Web サービスまたは特別なローカル ライブラリを使用)。インドの場合は、適切なタイムゾーンに従って時刻を表示します。
私の以前のプロジェクト (さまざまなロケールのオフィスのクライアントが使用する Web アプリケーション) では、オブジェクトのgetTimezoneOffset()値に依存して、クライアントのタイム ゾーン オフセットを見つけ、国へのオフセットのマップを維持し、ゾーンを適切に表示します。Date
Javascript
例えば
等。、
timezoneoffset は、クライアント側の Cookie に保存され、サーバー側のすべての要求に付属していました。Cookie が見つからない場合 (ユーザーが Cookie を消去したときに発生します)、タイムゾーン オフセットを決定し、Cookie を設定し、ユーザーを訪問しようとしていたページにリダイレクトする中間ページを使用しました。
クライアント側での Cookie の設定 (サンプル コード):
document.cookie=
"clientOffset=" + new Date()).getTimezoneOffset()
+ "; expires=" + expireDate.toGMTString()
+ "; domain=<your domain>;";
サーバー側では、
// aRequest is of type HttpServletRequest
Cookie [] cookies = aRequest.getCookies();
if (null == cookies) {
// redirect the user to the intermediate page that gets the client offset and
// takes the user the actually-intended page.
return;
}
for (Cookie cookie : cookies) {
// Find the cookie whose name matches the one you are looking for and
// read the value and parse to an integer.
}
日付は、次のようにユーザーのタイム ゾーンに変換されます。
// Here 'date' represents the date to be displayed in the server's time zone.
Date date = new Date();
SimpleDateFormat userDateFormat = new SimpleDateFormat("yyyyMMdd HH:mm:ss.SSS z");
// As mentioned above, you would maintain a map of clientOffset to timezone ID
// Let's say your client is in EST time zone which means you will get -240 as the
// client offset.
userDateFormat.setTimeZone(TimeZone.getTimeZone("EST"));
// This would convert the time in server's zone to EST.
System.out.println(userDateFormat.format(date));
お役に立てれば!