gpt4 book ai didi

nodatime - 将 DateTime with DateTimeKind.Unspecified 从 utc 转换为本地

转载 作者:行者123 更新时间:2023-12-01 10:31:54 26 4
gpt4 key购买 nike

我有一个数据库,其中所有日期都是 UTC,并且驱动程序总是向我发送带有 DateTimeKind.UnspecifiedDateTime 对象。我想假设它们是 UTC 时间并转换为本地时间。

使用 NodaTime 实现此目的的最简单方法是什么?

Instant.FromDateTimeUtc(utcDate).InZone(localZone); 一直提示 DateTimeKind 应该是 Utc。

最佳答案

如果您确实在使用 Noda Time 并且想要一个 ZonedDateTime,您可以“告诉”Noda Time 您确实有一个 UTC 值,然后转换它:

var zoned = LocalDateTime.FromDateTime(utcDate)
.InZoneStrictly(DateTimeZone.Utc)
.WithZone(localZone);

或者您可以只使用 DateTime.SpecifyKind 开始:

var utcDateTime = DateTime.SpecifyKind(unspecifiedDateTime, DateTimeKind.Utc);

...然后使用您现有的代码,或者如果您愿意,可以完全不使用 Noda Time。

确实,如果您在其他地方不需要 Noda Time,那么只需 DateTime.ToLocalTime() 就可以了:

var localDateTime = utcDateTime.ToLocalTime();

... 如果您在其上调用 ToLocalTime(),BCL 将假定未指定的日期/时间 UTC。当然,我建议在任何地方都使用 Noda Time :)

关于nodatime - 将 DateTime with DateTimeKind.Unspecified 从 utc 转换为本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41662267/

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