【问题标题】:Determining the time zone offset of UTC time in .Net在.Net中确定UTC时间的时区偏移
【发布时间】:2015-11-25 17:30:47
【问题描述】:

后端是C#和SQL Server。

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

由于夏令时,UTC 偏移量会根据一年中的时间发生变化,鉴于我知道日期/时间和时区,有没有办法让我找出 C# 中的 UTC 偏移量。

【问题讨论】:

  • 我怀疑您不需要“找出”偏移量,只需让底层系统处理转换即可。因此,如果您有一个 DateTime 值和两个 TimeZoneInfo 对象(源时区,在本例中为 UTC,以及已知用于向用户显示的目标时区),那么您将使用如下内容:msdn.microsoft.com/en-us/library/bb382770(v=vs.110).aspx
  • 太棒了,这正是我要找的。感谢您的帮助!

标签: c# utc timezone-offset


【解决方案1】:

鉴于我知道日期/时间和时区,有没有办法让我找出 C# 中的 UTC 偏移量

从技术上讲,您不应该需要找出这些信息,底层的系统时钟/日历/拥有什么——你应该照顾它。 (我敢肯定,has worked on date-time logic 的任何人都会证明这一事实不平凡至少可以这么说。)

理想情况下,每当您需要转换时区时,您需要做三件事:

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

考虑到这些情况,只要您想向本地化用户显示DateTime,就可以使用something like TimeZoneInfo.ConvertTime 来执行转换。理想情况下,这应该尽可能靠近 UI 完成,以便始终以 UTC 一致地执行支持逻辑。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-09-05
  • 2010-11-19
  • 2010-12-23
  • 2011-12-25
  • 2021-11-19
  • 2016-08-24
  • 2010-10-17
  • 2012-10-30
相关资源
最近更新 更多