1

私は現在、バックエンドSQLサーバーデータベースを使用してac#Webアプリケーションに取り組んでいます。私は解決する必要がある日付の周りにいくつかの問題があります。

アプリケーションは、GMT時間でWebおよびデータベースサーバーでホストされます。ユーザーは、CEST、MSK、ALMTの3つの異なるタイムゾーンに分散しており、時間の経過とともにサイトが他の国に展開される可能性があります。

現在のコードでは、SQLでDateTime.NowとGETDATE()を使用しており、サーバーの場所を使用すると、これはGMTになります。

私の質問は、異なる文化などを考慮に入れるときに、日付スタンプをデータベースに保存する必要がある形式です。それはUTC日付である必要がありますか?次のうち、どのように処理する必要がありますか?標準的な方法はありますか?

4

1 に答える 1

4

作成され、表示される直前にユーザーのタイムゾーンにシフトされるときは、すべてがUTC(サーバーのタイムゾーンではなくUTC)である必要があります。

UTC時間を取得するDateTime.UtcNowには、WebサーバーとGETUTCDATE()データベースで使用します。

DateTimeUTC時刻を指定する値を他のタイムゾーンに変換するには:

var dt = DateTime.UtcNow;
var tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var localTimeInNewYork = TimeZoneInfo.ConvertTimeFromUtc(dt, tz);

MSDNのタイムゾーン間の時間の変換も参照してください。

于 2012-10-04T20:58:55.653 に答える