确定.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 的任何人都会证明,至少可以说,它 非常重要 。)
理想情况下,任何时候需要转换时区,您都需要做三件事:
- 表示要转换的值的
DateTime
对象。
- 一个
TimeZoneInfo
对象,表示 DateTime
对象(在本例中为 UTC)的已知当前格式。
- 代表目标时区的
TimeZoneInfo
对象。
鉴于这些,任何时候你想向本地化用户显示 DateTime
,你都可以使用 something like TimeZoneInfo.ConvertTime
来执行转换。理想情况下,这应该尽可能接近 UI 完成,以便支持逻辑始终以 UTC 一致地执行。
后端是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 的任何人都会证明,至少可以说,它 非常重要 。)
理想情况下,任何时候需要转换时区,您都需要做三件事:
- 表示要转换的值的
DateTime
对象。 - 一个
TimeZoneInfo
对象,表示DateTime
对象(在本例中为 UTC)的已知当前格式。 - 代表目标时区的
TimeZoneInfo
对象。
鉴于这些,任何时候你想向本地化用户显示 DateTime
,你都可以使用 something like TimeZoneInfo.ConvertTime
来执行转换。理想情况下,这应该尽可能接近 UI 完成,以便支持逻辑始终以 UTC 一致地执行。