5

データベースにすべての日時値を UTC で格納するマルチタイムゾーン Web アプリケーションがあります。サーバーでアクションが発生すると、時刻を UTC に簡単に変換できます。

しかし、クライアントが時間または期間に入ったとき、それを検出して保存する最善の方法は何ですか?

現在、次のことを行っています。

  1. Date.getTimezoneOffset() の値を取得する (javascript)
  2. これを、Page の ICallbackEventHandler を介してサーバー側コードにポストします。
  3. その値をセッションに保存します
  4. 後続のリクエストでは、クライアントのタイムゾーンを使用して出力/入力の日時値を計算します。

実際の実装に関係なく、これは洗練されていないソリューションのように思えます。誰かがより良い方法を持っていますか?

4

2 に答える 2

4

私は非常に似たようなことをしていましたが、クライアント側で常にローカルに変換するためにJavaScriptを使用することを好むと思います。サーバーは、生成されたページのすべての時間を UTC で表示し、ページが読み込まれるとJavaScriptがそれを変換します。

これにより、現在時刻 (UTC) が常にわかっているため、サーバー側のコードの混乱が解消されます。クライアント側では、jqueryeach()関数を使用して、すべての時間値を一度にフォーマットしています。jqueryで簡単に処理できるように、隠しフィールドにUnix時間として各時間を書き出します。

この方法で私が目にする唯一の問題は次のとおりです。

a) javascriptにはまだ本当に良い日付/時刻の書式設定ルーチンがありません。

b) ユーザーがJavaScriptをオフにしている場合、機能しません。

于 2008-10-07T18:59:38.510 に答える
2

HttpRequest オブジェクトの「header」プロパティを使用して、クライアントから送信された「If-Modified-Since」ヘッダーを照会できます。このヘッダーには、次のように、クライアントのタイムゾーンを含む形式で日付を含める必要があります。

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

単純な部分文字列を抽出すると、タイムゾーン コードが得られます。ただし、残念ながら、すべてのブラウザーがそのヘッダーの送信に一貫性があるわけではないため、少し実験してみる必要があります。

よろしく、 ファブリツィオ

于 2008-10-07T19:02:42.653 に答える