データベースには、すべての日付/時刻をUTCで保存します。
ユーザーのタイムゾーン名(たとえば、「米国東部標準時」)を知っています。
正しい時刻を表示するために、ユーザーのタイムゾーンオフセットをUTC日付/時刻に追加する必要があると考えていました。しかし、タイムゾーン名でタイムゾーンのオフセットを取得するにはどうすればよいですか?
ありがとうございました!
TimeZoneInfo.FindSystemTimeZoneById
提供されたIDを使用してTimeZoneInfo
オブジェクトを取得し、次に TimeZoneInfo.GetUtcOffset
から:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time");
TimeSpan offset = tzi.GetUtcOffset( myDateTime);
TimeZoneInfo クラスの GetSystemTimeZones() メソッドを使用して、サーバーで構成されているすべてのタイムゾーンのリストをフェッチし、それをクライアントのタイムゾーンと一致させることができます。
なぜ「米国東部標準時」の形式のタイムゾーンがあるのですか?それはどこから来ましたか?
手動で追加するのではなく、指定したTimeZoneに基づいて日付の変換を処理するConvertTime
のTimeZoneInfo
メソッドを利用する必要があります。
var localizedDateTime = TimeZoneInfo.ConvertTime(yourDateTime, localTimeZoneInfo);