最近遇到需要进行时区转换和获取/生成指定时区时间的需求。但网上大部分例子都是通过UTC时间或者DateTime.NtcNow或DateTime.Now实现的。但如果和第三方对接会出现对方只提供当地非当前时间且没带时区,这时候这些例子都不太满足需求,所以研究了一下用NodaTime来解决这个问题。
代码实现
string dateStr = "2024-01-01";
string zoneStr = "Asia/Tokyo";
DateTime dateTime = DateTime.Parse(dateStr);
LocalDateTime localDateTime = LocalDateTime.FromDateTime(dateTime);
DateTimeZone timeZone = DateTimeZoneProviders.Tzdb[zoneStr];
ZonedDateTime zonedDateTime = new ZonedDateTime(localDateTime, timeZone, timeZone.MinOffset);
优点
可以通过string随意生成指定时区的指定时间,不需要通过UTC再转换。
缺点
暂时没有测试对夏令时的支持,以后有时间再研究。文章来源:https://www.toymoban.com/news/detail-622395.html
TimeZone列表
https://nodatime.org/TimeZones文章来源地址https://www.toymoban.com/news/detail-622395.html
到了这里,关于NodaTime生成指定时区的时间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!