在 .NET 中,以下语句返回不同的值:
Response.Write(
TimeZoneInfo.ConvertTime(
DateTime.Parse("2010-07-01 5:30:00.000"),
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))
);
// displays 7/1/2010 1:30:00 PM
..和这个...
Response.Write(
TimeZoneInfo.ConvertTime(
DateTime.Parse("2010-07-01 5:30:00.000"),
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
TimeZoneInfo.FindSystemTimeZoneById("UTC"))
);
// displays 7/1/2010 12:30:00 PM
为什么是这样?我认为 UTC 和 GMT 标准时间是等效的。
Update
经过进一步测试,我发现以下内容appear等价于:
"UTC"
“格林威治标准时间”
“摩洛哥标准时间”
然而,夏季月份有以下不同:
“GMT 标准时间”
也许我的问题应该是,为什么“格林威治标准时间”和“GMT标准时间”不同?
结束更新
格林尼治标准时间not调整为夏令时(夏令时)。你可以从马嘴里听到这一点网站。
添加这行代码来查看问题的根源:
Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime);
输出:正确。
这不是 .NET 问题,而是 Windows 搞砸了。 TimeZoneInfo 使用的注册表项是 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\GMT Standard Time。您最好坚持使用 UTC。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)