私は英国出身で、最近 WinHost のBasic Packageに Web サイトを展開しました。
DateTime.Now()
C# またはSQL で使用する場合GETDATE()
、これらはどちらも次のようなものを返しGMT-8
ます (サーバーが米国でホストされているため)。
サーバーのアクセス許可に関して少し制限があると思います (たとえば、SQL ログイン言語を変更できません)。
これらの日付を GMT に保存する最良の方法は何ですか?
私は英国出身で、最近 WinHost のBasic Packageに Web サイトを展開しました。
DateTime.Now()
C# またはSQL で使用する場合GETDATE()
、これらはどちらも次のようなものを返しGMT-8
ます (サーバーが米国でホストされているため)。
サーバーのアクセス許可に関して少し制限があると思います (たとえば、SQL ログイン言語を変更できません)。
これらの日付を GMT に保存する最良の方法は何ですか?
DateTime.UtcNow
データベースのまま利用・保管。データベースから読み取るときは、クラスを使用して時間UTC
に変換すると仮定します。SQL には、タイム ゾーン オフセットに関する情報を含めないでください。UK
TimeZoneInfo
SqlServer では、getUtcDate() を使用してすべての日時値を保存します。.NET アプリケーションで必要なタイムゾーンに変換できます。
DateTimes を UTC で保存する必要があると思います。次に、TimezoneInfo クラスを使用して別のタイムゾーンに簡単に変換できます。
DateTime.UtcNow
データベースに保存するか、 getUtcDate
SQL 内で使用しますTimeZoneInfo.ConvertTimeFromUtc
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById(/* destination timezone (users timezone) */);
DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(YourDateTimeFromDatabase, cstZone);