COLD TOLD には一点だけ、丁重に反対しなければなりません。を使用するDateTime.Now
と、アプリ サーバーを実行しているマシンの日付と時刻が取得されます。これは問題ありませんが、保存するときにタイムゾーンも一緒に保存する必要があります。そうしないと、変換時に、変換元のタイムゾーンがわかりません。それをアプリにハードコードしてから、別のタイムゾーンのデータ センター サーバーに移動した場合は、そのアプリの設定を変更する必要があります。
一方、常に を使用して日付と時刻を保存するDateTime.UtcNow
場合は、データベースに 1 つの値を保存するだけで済みます。それをタイムゾーンロケールに変換するときが来たら、情報が最初に計算されたタイムゾーンを見つけるためにデータベースにアクセスする必要はありません-それは常にUTC / GMTです.
var destinationTimeZone = TimeZoneInfo.FindSystemTimeZoneById(
"US Mountain Standard Time");
utc = DateTime.UtcNow;
mst = TimeZoneInfo.ConvertTimeFromUtc(utcTime, destinationTimeZone);
Console.WriteLine("UTC: " + utc.ToString("yyyy-MM-dd HH-mm-ss"));
Console.WriteLine("MST: " + mst.ToString("yyyy-MM-dd HH-mm-ss"));