1

Webアプリで現地時間をどのように実装するかを決定しようとしています。すべてのユーザーがログインしており、匿名ユーザーは存在しません。現地時間のすべての時間値を確認する必要があります。

これはどのように行われるべきですか?

  1. すべてのDateTime値は、UTC時間としてデータベースに保存されます
  2. 各ユーザーのプロファイルにはUTCオフセット値が保存されています
  3. datetime-valueを表示するときは、データベースから値を取得し、ユーザーオフセットを適用します。

これは行く方法ですか?それとも私は何かが足りないのですか?

4

2 に答える 2

7

ユーザーのUTCオフセットを保存しないでください。これでは、完全なタイムゾーン情報を知るのに十分ではありません。「ヨーロッパ/ロンドン」など、オルソンのタイムゾーンIDを保存する必要があります。次に、履歴の変更、夏時間などを考慮して、現地時間で任意のUTC時間を表示できます。

編集:TimeZoneInfoIDは実際には通常のオルソン形式ではないようです-しかし、ユーザーに表示できる(選択肢として)賢明なものがあり、後でゾーンを取得できるIDがある限り、それはおそらくわかりました...後で他のシステムと相互運用する必要がある場合は、問題が発生する可能性があります。

ユーザーにタイムゾーンを尋ねる必要があります(おそらくJavaScriptを使用して最初に推測しようとします)-ユーザーはあなたよりも多くの情報を持っています。

これについて詳しくは、 TimeZoneInfoクラスを調査する必要があります。自分であまり使用したとは言えませんが、.NET3.5以降ではこれが方法です。特に、FindSystemTimeZoneByIdGetSystemTimeZonesが重要になります。

タイムゾーンは一般的に苦痛ですが、少なくとも古いタイプTimeZoneInfoよりもはるかに多くのサポートを提供します。TimeZone

于 2009-03-13T19:58:19.193 に答える
0

それは私にとって最も簡単な方法のように聞こえます。私が見た唯一のスリップアップは、一部の地域(インディアナの一部やアリゾナのすべてだと思います)が夏時間に協力していないため、正しい時刻を表示するために特別な注意を払う必要があります。

于 2009-03-13T19:58:51.813 に答える