【发布时间】: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 的时间吗?