6

データベースにイベント ログがあり、イベントの日時が UTC 時間として保存されています。NodaTime を使用している私のアプリケーションでは、値を として取得し、DateTimeそれを に変換しますInstant

var instant = NodaTime.Instant.FromDateTimeUtc(DateTime.SpecifyKind(eventDateTime, DateTimeKind.Utc));

今、私はシステムのタイムゾーンを使用することにZonedDateTime対応したいと考えています。必要なものを手に入れるためにinstant使用できることを知っています。ただし、変数に正しい値を入力する方法がわかりません。システムのタイムゾーンに対応するオブジェクトを取得するにはどうすればよいですか?instant.InZone(systemTimeZone)ZonedDateTimesystemTimeZoneDateTimeZone

4

1 に答える 1

13

IDateTimeZoneProvider.GetSystemDefault関心のあるタイム ゾーン プロバイダーに使用します。次に例を示します。

var systemZone = DateTimeZoneProviders.Tzdb.GetSystemDefault();
var zonedDateTime = instant.InZone(systemZone);

またはDateTimeZoneProviders.Bclを使用して、適切なTimeZoneInfoバックアップされたタイム ゾーンを使用します。

于 2013-12-27T21:05:45.353 に答える