1

米国のリモート データベースに接続するクライアント アプリケーションを使用しています。日付がデータベースで1月14日である場合、1月13日として返されるなど、結果に現れる日時のあいまいさがいくつかあります.

知りたいこと クライアントの CurrentCultureInfo をサーバーと同じに設定すると、問題が解決します。

これができれば..同じことの小さな例が欲しいです。

4

3 に答える 3

1

あなたのカルチャは書式設定に使用されます。あなたが抱えていると思われる問題は、異なるタイムゾーンの 1 つです。

これに対する私の簡単な解決策は、常に日付と時刻を UTC で保存することです。そのためにクライアントから DateTime.UtcNow を使用でき、必要に応じて後でローカル時間に戻すことができます。

于 2009-01-09T10:38:15.127 に答える
0

保存する日付を UTC 時間に変更できず、データの挿入および選択時に前後に変換できない場合。次に、データがサーバーに挿入されていない限り、データがどこから来たかを示す何かを記録する必要があります (データを挿入したクライアントのローカル タイム ゾーンを意味します)。

データがサーバーに挿入されるだけの場合は、おそらく SQL 関数 GetUTCDate を使用して GetDate と比較し、データベースに保存されている日時から結果を差し引くことができます。次に、クライアントで DateTime.ToLocalTime() を使用して、返された値を現地時間に変換します。私が言ったように、これは、データがサーバーで排他的に挿入されるか、少なくとも同じタイムゾーンのクライアントによって挿入される場合にのみ機能します。そうでなければ忘れてください。

于 2009-01-09T12:34:47.287 に答える
0

問題は、米国自体にいくつかの異なるタイム ゾーンがあるため、これでは解決できないことです。私が考えることができる 1 つの回避策は、クライアント コンピューターのタイム ゾーンをサーバーのタイム ゾーンに設定することですが、それは正しくないように思えます。

于 2009-01-09T10:13:34.320 に答える