编程语言
首页 > 编程语言> > c# – 将System.DateTime转换为NodaTime.ZonedDateTime

c# – 将System.DateTime转换为NodaTime.ZonedDateTime

作者:互联网

我有一个System.DateTime,它已经在特定的时区但没有指定DateTime.Kind,以及一个代表IANA时区的字符串.我想将其转换为NodaTime.ZonedDateTime.

例如:

var original = new DateTime(2016, 1, 1, 12, 0, 0);
var timezone = "America/Chicago";

我想要一个ZonedDateTime代表芝加哥时间01/01/2016 – 12PM.我该怎么做呢?

解决方法:

如果我理解正确,你想在芝加哥采用一个已知时间的标准DateTime并获得一个ZonedDateTime来代表这个Date Time Time Zone,对吗?

如果是这样,我相信这样做会.如果可以直接构造,则可能不需要从DateTime到LocalDateTime的中间转换.

var dotNetDateTime = new DateTime(2016, 1, 1, 12, 0, 0);
var localDate = LocalDateTime.FromDateTime(dotNetDateTime);
var chicagoTime = DateTimeZoneProviders.Tzdb["America/Chicago"];
var chicagoZonedDateTime = chicagoTime.AtStrictly(localDate); // Will contain 2016 01 01 noon

// now you can convert to time in Los Angeles
var laTime = DateTimeZoneProviders.Tzdb["America/Los_Angeles"];
var laZonedDateTime = chicagoZonedDateTime.WithZone(laTime); // will contain 2016 01 01 10am

标签:c,nodatime
来源: https://codeday.me/bug/20190527/1165786.html