当前位置:  开发笔记 > 编程语言 > 正文

将DateTime与DateTimeKind.Unspecified从utc转换为local

如何解决《将DateTime与DateTimeKind.Unspecified从utc转换为local》经验,为你挑选了1个好方法。

我有一个数据库,所有日期都是UTC,驱动程序总是发送给我的DateTime对象DateTimeKind.Unspecified.我想假设它们是UTC并转换为当地时间.

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

Instant.FromDateTimeUtc(utcDate).InZone(localZone); 继续抱怨DateTimeKind应该是Utc.



1> Jon Skeet..:

如果您肯定使用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完全取出.

事实上,DateTime.ToLocalTime()如果你在其他地方不需要Noda Time ,那就没关系了:

var localDateTime = utcDateTime.ToLocalTime();

... 如果你打电话,BCL将假设未指定的日期/时间 UTC ToLocalTime().当然,我建议尽量使用Noda Time :)

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有