顧客の生年月日、参加日などのすべての詳細で構成される顧客オブジェクトがあります。
すべての日付フィールドをユニバーサル日時に変換してデータベースに保存したいと思います。
顧客オブジェクトからすべての日付フィールドを取得して、それらをユニバーサル日時に変換する方法を教えてもらえますか?
Customer.ChangeToUTC()を呼び出すときに、顧客に存在するすべての日時フィールドがユニバーサル時間に変更されるようなソリューションが必要です。
それは簡単なことです:
TimeZone ltz = TimeZone.CurrentTimeZone;
DateTime t1 = DateTime.Now;
DateTime t2 = ltz.ToUniversalTime(t1);
顧客オブジェクトからすべての日付フィールドを取得し、それらをユニバーサル日付時刻に変換する方法を誰か助けてもらえますか
手動で行うだけです。ただし、元の型のプロパティを再利用することはしません。オブジェクトを作成する前(最初にデータを取得するとき) に行うか、データベース転送のためだけに軽量の DTO の一部として行うかのCustomer
どちらかです。
特定のプロパティを解釈する方法を知っている場合、日付/時刻プロパティについての推論は十分に困難です。プロパティがユニバーサル、ローカル、または未指定のいずれになるかがわからない場合は、はるかに困難になります。
日付のようなものは、普遍的であるかどうかについて考えるのにあまり意味がありません。それらをデータベースに保存するために、最初から を使用して明示的に作成することもできますDateTimeKind.Utc
が、基本的に日付は日付です。.NET フレームワークの問題の 1 つは、日付用の個別のデータ型がないことです。
.NET の代替日付/時刻 API であるNoda Timeというプロジェクトがあります。もちろんそれを使用することも 1 つのオプションですが、BCL 型に固執する場合でも、日付と時刻について正しい方法で考えるために、概念と型の選択に関するドキュメントを読む価値があると思います。モデル内の各プロパティに使用する型を決定し、それを文書化することをお勧めします。コードでそれらを異なる方法で処理する必要があります。
日時に精通している場合は非常に簡単です。
customer.BirthDate = customer.BirthDate.ToUniversalTime();
すべての日付フィールドに対して上記を実行し、顧客ID番号のwhere句を使用して更新クエリを実行します。