ユーザーのUTCオフセットを保存しないでください。これでは、完全なタイムゾーン情報を知るのに十分ではありません。「ヨーロッパ/ロンドン」など、オルソンのタイムゾーンIDを保存する必要があります。次に、履歴の変更、夏時間などを考慮して、現地時間で任意のUTC時間を表示できます。
編集:TimeZoneInfo
IDは実際には通常のオルソン形式ではないようです-しかし、ユーザーに表示できる(選択肢として)賢明なものがあり、後でゾーンを取得できるIDがある限り、それはおそらくわかりました...後で他のシステムと相互運用する必要がある場合は、問題が発生する可能性があります。
ユーザーにタイムゾーンを尋ねる必要があります(おそらくJavaScriptを使用して最初に推測しようとします)-ユーザーはあなたよりも多くの情報を持っています。
これについて詳しくは、 TimeZoneInfoクラスを調査する必要があります。自分であまり使用したとは言えませんが、.NET3.5以降ではこれが方法です。特に、FindSystemTimeZoneByIdとGetSystemTimeZonesが重要になります。
タイムゾーンは一般的に苦痛ですが、少なくとも古いタイプTimeZoneInfo
よりもはるかに多くのサポートを提供します。TimeZone