NodaTime生成指定时区的时间

  • NodaTime生成指定时区的时间已关闭评论
  • 155 次浏览
  • A+
所属分类:.NET技术
摘要

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

最近遇到需要进行时区转换和获取/生成指定时区时间的需求。但网上大部分例子都是通过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再转换。

缺点

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

TimeZone列表

https://nodatime.org/TimeZones