TimeZoneInfo
はい、そうです。 (これは .NET フレームワークの一部であり、C# の一部ではありません。C# はたまたま使用している言語です。) しかし、それはあなたが本当にやりたいことだとは思いません。
DateTime
を保存する理由 サーバーの とにかくタイムゾーン?ほとんどの場合、UTC で保存する方が賢明です。他のことは別として、サーバーが夏時間を観察するタイムゾーンにある場合、時計が戻ると、年に1時間あいまいになります。 (同じ現地時間が 2 回発生します。)
UTC として保存したら、Javascript クライアントにも UTC として渡す必要があります。あなたは「UTCからのユーザーオフセットを取得するJavaスクリプト」を持っていると言いますが、それは正確な瞬間に依存します。たとえば、私は英国にいるので、オフセットが 0 時間になることもあれば、+1 時間になることもあります。 UTC をクライアントに返すと、その UTC 時間からローカル時間を計算できます。 正確を取得できない限り、サーバーはできません クライアントからサーバーへのタイム ゾーンの表現。これは一般的に難しい作業です。
ここでも、C# 自体は関係ありません。 .NET フレームワークのどの部分を意味するのか明確ではありません - TimeZone
? TimeZoneInfo
? DateTime
? TimeZoneInfo
には履歴データがありますが、それをサポートするオペレーティング システム バージョンを使用している場合に限ります。
まあ、あなたが気にする可能性が高い限り。 TZDB ほど多くの履歴データはなく、ロシアとナミビアについては非常に奇妙な表現がいくつかありますが、一般的にルール変更のアイデアがあります。