-1

オブジェクトにキャストしている文字列の形式で日付/時刻の値を取得していDateTimeます。

eg. 2012-11-10 11:37:06

今回は、システムの現地時間とは異なるタイムゾーンからのものであることを知っています。

オブジェクトにタイムゾーンを割り当ててDateTime、自分のローカル タイムゾーンで時間を正確に表し、夏時間の変更に対応できるようにするにはどうすればよいですか?

4

2 に答える 2

0

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

于 2012-11-13T22:21:07.510 に答える
0

TimeZoneInfo.ConvertTimeToUtcはおそらくあなたが望むことをします。

このようにして、すべての時刻を (インポート時に) 変換してUTCとして保存し(元の時刻が関連付けられているタイム ゾーンの夏時間オフセットなどを知っていると仮定して)、その後は任意のタイム ゾーンで表示できます。DateTimeTimeZoneInfoオブジェクトの両方を取るオーバーロード メソッドにリンクしました。

TimeZoneInfoこのような変換に役立つ方法は他にもあります。

于 2012-11-13T22:17:51.760 に答える