【问题标题】:Why TimeZoneInfo.GetSystemTimeZones() is not showing the correct hour offset with UTC in non daylight saving dates?为什么 TimeZoneInfo.GetSystemTimeZones() 在非夏令时未显示正确的 UTC 小时偏移量?
【发布时间】:2017-12-13 22:13:47
【问题描述】:

我正在尝试获取时区和 UTC 之间的小时数差异。我将机器的日期更改为 7 月的某个日期,这样我就不用考虑白天了,并运行了下面的两个代码段。一个在 LinqPad 中,一个在 SSMS 中。我在太平洋时间。为什么 TimeZoneInfo.GetSystemTimeZones() 无论当前时间是否为夏令时,总是报告 -8,而 SQL Server 根据夏令时报告 -7 或 -8?

有没有办法让 TimeZoneInfo.GetSystemTimeZones() 显示实际的小时偏移量还是固定的?我没有看到这个参数。

C#:

TimeZoneInfo local = TimeZoneInfo.Local;
TimeZoneInfo.ClearCachedData();
var sb = new StringBuilder();
foreach (var tzi in TimeZoneInfo.GetSystemTimeZones())
{
    sb.AppendFormat(" {0}| {1} | {2} | {3} | {4}",

                    tzi.BaseUtcOffset.TotalHours,
                    tzi.StandardName,
                    tzi.DisplayName,
                    tzi.DaylightName,
                    tzi.SupportsDaylightSavingTime);
    sb.AppendLine();
}

string table = sb.ToString().Dump(); // Always -8 for Pacific. Why?

SQL:

SELECT DATEDIFF(hh,GETUTCDATE(),GETDATE())  -- -7 o -8. This is expected

【问题讨论】:

  • 你知道如何使用 GetSystemTimeZones 来利用 DTS 的时间吗?

标签: c# .net


【解决方案1】:

您正在采用 BaseUtcOffset,这是该区域 没有 DST 调整的时间。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 2014-10-16
  • 2021-02-09
  • 2015-05-11
  • 1970-01-01
  • 2014-06-06
  • 2010-09-18
相关资源
最近更新 更多