显示在另一个时区中发生的时间戳

时间:2014-01-17 00:26:43

标签: c# sql datetime

我希望能够显示在另一个时区发生的事件的时间如下

  

11月22日上午7点01分(NZDT)

但是DateTimeOffset只存储时间点的数字偏移量,而不是产生该偏移量的时区。

是否有更合适的SQL / .Net类型允许存储实际的原始时区信息,还是需要将其存储为2个单独的列/自定义.net类型?

2 个答案:

答案 0 :(得分:1)

您确实需要存储区域或其他可帮助您重建所需内容的区域。帮助的.NET类是the TimeZoneInfo class。如果你查一下,你会发现它有内置的序列化。它对系统上可用的时区有一定的依赖性,但可以通过允许自定义时区来解决问题。我认为它会帮助你。

答案 1 :(得分:1)

如@ g-stoynev所述,有必要存储时区 - 对于任何给定的时区偏移,可能有多个时区。

TimeZoneInfo类的另一种解决方案是Nodatime库(http://nodatime.org/) - 它具有将实际时间和相关时区信息存储在一起的类 - 并从源自的全部时区列出时区信息。 IANA时区数据库(http://www.iana.org/time-zones)。

无论您是否使用该库,都有很多关于文档中可用日期表示的有用信息(http://nodatime.org/1.2.x/userguide/concepts.html