NodaTime生成指定时区的时间

打印 上一主题 下一主题

主题 867|帖子 867|积分 2601

最近遇到需要进行时区转换和获取/生成指定时区时间的需求。但网上大部分例子都是通过UTC时间或者DateTime.NtcNow或DateTime.Now实现的。但如果和第三方对接会出现对方只提供当地非当前时间且没带时区,这时候这些例子都不太满足需求,所以研究了一下用NodaTime来解决这个问题。

代码实现
  1.         string dateStr = "2024-01-01";
  2.         string zoneStr = "Asia/Tokyo";
  3.         DateTime dateTime = DateTime.Parse(dateStr);
  4.         LocalDateTime localDateTime = LocalDateTime.FromDateTime(dateTime);
  5.         DateTimeZone timeZone = DateTimeZoneProviders.Tzdb[zoneStr];
  6.         ZonedDateTime zonedDateTime = new ZonedDateTime(localDateTime, timeZone, timeZone.MinOffset);
复制代码
优点

可以通过string随意生成指定时区的指定时间,不需要通过UTC再转换。

缺点

暂时没有测试对夏令时的支持,以后有时间再研究。

TimeZone列表

https://nodatime.org/TimeZones

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表