0

私のJavaWebアプリケーションが米国にデプロイされている場合、クライアントの国に関係なく米国の時間を取得します。ただし、クライアントがインドにいる場合は、タイムゾーン、ロケール、またはユーザー設定を使用して、インドの時間を取得する必要があります。私は何をすべきか?

誰か助けてくれませんか。

4

2 に答える 2

1

ユーザーの IP アドレスで国を特定します ( Web サービスまたは特別なローカル ライブラリを使用)。インドの場合は、適切なタイムゾーンに従って時刻を表示します。

于 2012-08-27T14:23:24.427 に答える
0

私の以前のプロジェクト (さまざまなロケールのオフィスのクライアントが使用する Web アプリケーション) では、オブジェクトのgetTimezoneOffset()値に依存して、クライアントのタイム ゾーン オフセットを見つけ、国へのオフセットのマップを維持し、ゾーンを適切に表示します。DateJavascript

例えば

  • 330 -> IST
  • -240 -> EST
  • -200 -> EST5EDT

等。、

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));

お役に立てれば!

于 2012-08-27T14:18:06.793 に答える