0

クライアントがイベントを作成し、ユーザーがこれらのイベントに登録するasp.net Webサイトに取り組んでいます。datetime を保存および表示する方法について多くのことを読んだ後でも、どのルートを取るべきかについてまだ混乱しています。

最も受け入れられている解決策 (件名を検索した後) は、すべてを UTC で保存し、クライアントのタイム ゾーン オフセットを差し引いて表示することです。別の方法として、datetime をイベントのタイム ゾーン (サーバーではなく、イベントの場所の現地時間) で格納し、要求されたときにそのままクライアントに表示することもできます。その方が効率的ではないでしょうか。何か不足していますか?サマータイムはそのように考慮されますか?

前もって感謝します。

4

3 に答える 3

1

イベントのロケーションタイムゾーンを参照ポイントとして使用して、これを実行して現在の現地時間を取得できます(.NET 3.5または4.0の場合)。

string EventTimeZoneId = "GTB Standard Time"; // for instance, this should be stored in DB as varchar[32]
DateTime EventLocalTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, EventTimeZoneId);

これは、夏時間も考慮に入れています。私が考えることができる唯一の欠点は、クライアントがイベントの作成中に間違ったタイムゾーンを選択した場合、すべての登録の時間が間違ってしまうことです。

于 2012-04-07T10:26:19.653 に答える
1

すべてを UTC で保存することが標準になっているのには理由があります。

イベントを現地時間で保存する代わりに、異なるタイムゾーンのユーザーに、イベントが実際に行われた時間について混乱を招く可能性があります。

于 2012-04-06T17:16:39.010 に答える
0

c#asp.netを使用している場合

  1. DBに保存するには

DateTime CurrntDate = DateTime.SpecifyKind(DateTime.Now、DateTimeKind.Unspecific); var _utc = TimeZoneInfo.ConvertTimeToUtc(CurrntDate、TimeZoneInfo.Local);

  1. dbから日付を取得し、クライアントのタイムゾーンに従って変換して表示します。

それはあなたのビジネスロジックに一貫性を置きます。

于 2012-04-06T17:38:31.330 に答える