6

我在数据库中有一个事件日志,事件的日期时间存储为 UTC 时间。在我使用 NodaTime 的应用程序中,我将值作为 a 获取DateTime,然后将其转换为Instant

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

现在我想获得ZonedDateTimeinstant使用系统时区相对应的信息。我知道我可以用它instant.InZone(systemTimeZone)来获得ZonedDateTime我需要的东西。但是,我不知道如何systemTimeZone用正确的值填充变量。如何获取DateTimeZone系统时区对应的对象?

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 回答