关于c#:确定.Net中UTC时间的时区偏移量

Determining the time zone offset of UTC time in .Net

后端是C#和SQL Server。

我在我的数据库中以UTC的不同时区保存日志活动日期时间。 我需要填充全局分布的前端,以便根据前端所在的位置来定位记录的UTC时间,这将是已知的,例如, PT,ET。 它还需要处理夏令时,这是我遇到困难的地方。

由于夏令时,UTC偏移量会根据一年中的时间而变化,因此我可以通过一种方式找出C#中的UTC偏移量,因为我知道日期/时间和时区。


is there a way for me to find out what the UTC offset is in C# given that I know the date/time and the time zone

从技术上讲,你不应该找到这些信息,基础系统时钟/日历/你有什么应该照顾它。 (我敢肯定,任何从事日期时间逻辑工作的人都会证明,至少可以说这是非常重要的。)

理想情况下,只要您需要转换时区,就有三件事:

  • 一个DateTime对象,表示要转换的值。
  • 一个TimeZoneInfo对象,表示DateTime对象的已知当前格式(在本例中为UTC)。
  • 表示目标时区的TimeZoneInfo对象。
  • 鉴于这些事情,只要您想将DateTime显示给本地化用户,就可以使用类似TimeZoneInfo.ConvertTime的内容来执行转换。 理想情况下,这应尽可能靠近UI,以便始终以UTC格式执行后备逻辑。