web-dev-qa-db-ja.com

クライアントのタイムゾーンを検出する方法は?

Jspでクライアント/リクエストのタイムゾーンを取得するにはどうすればよいですか?

15
user353682

残念ながら、この情報はHTTPヘッダーで渡されません。

通常、JavaScriptを取得するには、JavaScriptを連携させる必要があります。
Webには例がたくさんありますが、ここに1つあります http://www.coderanch.com/t/486127/JSP/Java/Query-timezone

24

タイムゾーンを取得することはできませんが、クライアント側から現在の時刻を取得できます。 javascriptを介して、ポストバックよりも。サーバー側では、その時刻をGMT/UTCに変換できます。 UTCはTimeZoneを示しています。

1
Adeel

ユーザーに現地時間を表示するために現地のタイムゾーンが必要な場合は、サービス内のすべての時刻をUTCで表し、ブラウザーで Moment.js を使用して現地時間としてレンダリングすることをお勧めします。

私の一般的なルールは、現地時間との間で変換するユーザーとのインターフェースを除いて、すべての場所でUTCで時刻を処理および保存することです。 UTCの利点は、夏時間の調整について心配する必要がないことです。

何かの年齢を表示したい場合(「3時間前に投稿」など)、UTCタイムスタンプを現在のUTC時刻と比較するだけでよいことに注意してください。現地時間に変換する必要はまったくありません。

1
quantoid

私にとって最善の解決策は、日付/時刻を文字列として送信し、サーバーのタイムゾーンで解析してタイムスタンプを取得することです。タイムスタンプは常にUTC(またはUTCであるはず)であるため、クライアントのTimeZoneは必要ありません。

たとえば、「10/07/201812:45」の送信は次のように解析できます。

SimpleDateFormat oD = new SimpleDateFormat();
oD.applyPattern("dd/MM/yyyy HH:mm");
oD.setTimeZone(TimeZone.getDefault()); // ;)
Date oDate = oD.parse(request.getParameter("time"));

もちろん、特定の日付/時刻形式を設定できます。

0
jlbofh