米国のリモート データベースに接続するクライアント アプリケーションを使用しています。日付がデータベースで1月14日である場合、1月13日として返されるなど、結果に現れる日時のあいまいさがいくつかあります.
知りたいこと クライアントの CurrentCultureInfo をサーバーと同じに設定すると、問題が解決します。
これができれば..同じことの小さな例が欲しいです。
米国のリモート データベースに接続するクライアント アプリケーションを使用しています。日付がデータベースで1月14日である場合、1月13日として返されるなど、結果に現れる日時のあいまいさがいくつかあります.
知りたいこと クライアントの CurrentCultureInfo をサーバーと同じに設定すると、問題が解決します。
これができれば..同じことの小さな例が欲しいです。
あなたのカルチャは書式設定に使用されます。あなたが抱えていると思われる問題は、異なるタイムゾーンの 1 つです。
これに対する私の簡単な解決策は、常に日付と時刻を UTC で保存することです。そのためにクライアントから DateTime.UtcNow を使用でき、必要に応じて後でローカル時間に戻すことができます。
保存する日付を UTC 時間に変更できず、データの挿入および選択時に前後に変換できない場合。次に、データがサーバーに挿入されていない限り、データがどこから来たかを示す何かを記録する必要があります (データを挿入したクライアントのローカル タイム ゾーンを意味します)。
データがサーバーに挿入されるだけの場合は、おそらく SQL 関数 GetUTCDate を使用して GetDate と比較し、データベースに保存されている日時から結果を差し引くことができます。次に、クライアントで DateTime.ToLocalTime() を使用して、返された値を現地時間に変換します。私が言ったように、これは、データがサーバーで排他的に挿入されるか、少なくとも同じタイムゾーンのクライアントによって挿入される場合にのみ機能します。そうでなければ忘れてください。
問題は、米国自体にいくつかの異なるタイム ゾーンがあるため、これでは解決できないことです。私が考えることができる 1 つの回避策は、クライアント コンピューターのタイム ゾーンをサーバーのタイム ゾーンに設定することですが、それは正しくないように思えます。