gpt4 book ai didi

c# - 使用NodaTime,如何将Instant转换为对应系统的ZonedDateTime?

转载 作者:太空狗 更新时间:2023-10-29 23:07:56 27 4
gpt4 key购买 nike

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

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

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

最佳答案

使用IDateTimeZoneProvider.GetSystemDefault您感兴趣的时区提供商。例如:

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

或者使用 DateTimeZoneProviders.Bcl 来使用适当的 TimeZoneInfo 支持的时区。

关于c# - 使用NodaTime,如何将Instant转换为对应系统的ZonedDateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20807799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com