我的位置是格林威治标准时间 +5:30
当我尝试使用 JavaScript 查找 getTimezoneOffset
时
var x = new Date();
var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;
我得到值 -5.5
。奇怪的是,当我使用 C# 做同样的事情时
var localZone = TimeZone.CurrentTimeZone;
var localOffset = localZone.GetUtcOffset(new Date());
var currentTimeZoneOffsetInHours = localOffset.TotalHours;
返回值为5.5
。
这个标志是故意改变的还是我遗漏了什么重要的东西?
最佳答案
JavaScript's getTimeZoneOffset
返回要添加到 local 时间以到达 UTC 的偏移量。 (IMO,“与 UTC 的时区偏移量”的描述具有误导性。)
.NET 的 GetUtcOffset
返回要添加到 UTC 时间的偏移量以获得本地时间,这是 IMO 更传统的方法。基本上,这只是一个不同的引用点。
请注意,如果您使用的是 .NET 3.5 或更高版本,您实际上应该使用 TimeZoneInfo
而不是 TimeZone
。
关于c# - 为什么时区偏移返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12581881/