确定.Net中UTC时间的时区偏移量

Determining the time zone offset of UTC time in .Net

后端是C#和SQL服务器。

我将 activity 来自不同时区的 UTC 日期时间保存在我的数据库中。我需要填充一个全球分布的前端,以便它根据前端所在的位置本地化记录的 UTC 时间,这将是已知的,例如太平洋时间,东部时间。它还需要处理夏令时,这是我 运行 遇到困难的地方。

由于夏令时的原因,UTC 偏移量会根据一年中的时间发生变化,如果我知道 date/time 和时区。

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

从技术上讲,您 不需要 找出这些信息,底层系统 clock/calendar/what-have-you 应该会处理它。 (我敢肯定 has worked on date-time logic 的任何人都会证明,至少可以说,它 非常重要 。)

理想情况下,任何时候需要转换时区,您都需要做三件事:

  1. 表示要转换的值的 DateTime 对象。
  2. 一个 TimeZoneInfo 对象,表示 DateTime 对象(在本例中为 UTC)的已知当前格式。
  3. 代表目标时区的 TimeZoneInfo 对象。

鉴于这些,任何时候你想向本地化用户显示 DateTime,你都可以使用 something like TimeZoneInfo.ConvertTime 来执行转换。理想情况下,这应该尽可能接近 UI 完成,以便支持逻辑始终以 UTC 一致地执行。