オブジェクトにキャストしている文字列の形式で日付/時刻の値を取得していDateTimeます。
eg. 2012-11-10 11:37:06
今回は、システムの現地時間とは異なるタイムゾーンからのものであることを知っています。
オブジェクトにタイムゾーンを割り当ててDateTime、自分のローカル タイムゾーンで時間を正確に表し、夏時間の変更に対応できるようにするにはどうすればよいですか?
ADateTimeはタイム ゾーンではなく、タイム ゾーンを完全には認識していません。はKind、システム タイム ゾーン ( Local)、UTC ( Universal)、または「その他」 ( Unspecified) のいずれにあるかを示します。
がありますがDateTimeOffset、これは に似てDateTimeいますが、UTC からのオフセットもあります。ただし、これはタイム ゾーンを持つことと同じではありません。ローカル タイムが他の時点でどうなるかはわかりません。
私は偏見がありますが、さまざまな概念を表すためにあらゆる種類の型を持つ私のNoda Timeを使用することをお勧めします。
ZonedDateTime- あいまいな場合に備えて、UTC からのオフセットを含む、特定のタイム ゾーンのローカル日付/時刻OffsetDateTime- UTC からのオフセットを持つローカルの日付/時刻 (ただし、特定のタイム ゾーンはありません)LocalDateTime- 特定のタイムゾーンやオフセットのない、ローカルの日付/時刻のみLocalDate- 時間コンポーネントまたはゾーンのない日付LocalTime- 日付またはゾーンなしの日付の時刻のみこれらにはすべて、関連付けられた暦体系もあります ( とは異なりDateTimeます)。ほんの一瞬Instant、Unix エポックから数ティックしかありません。
BCL 型に固執したい場合は、独自のデータ型DateTimeで a を保持できます。TimeZoneInfo
TimeZoneInfo.ConvertTimeToUtcはおそらくあなたが望むことをします。
このようにして、すべての時刻を (インポート時に) 変換してUTCとして保存し(元の時刻が関連付けられているタイム ゾーンの夏時間オフセットなどを知っていると仮定して)、その後は任意のタイム ゾーンで表示できます。DateTimeとTimeZoneInfoオブジェクトの両方を取るオーバーロード メソッドにリンクしました。
TimeZoneInfoこのような変換に役立つ方法は他にもあります。