4

我的位置是格林威治标准时间 +5:30

当我尝试getTimezoneOffset使用 JavaScript查找时

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

这个标志是设计改变的还是我错过了什么重要的东西?

4

1 回答 1

6

JavaScriptgetTimeZoneOffset返回要添加到本地时间以达到 UTC 的偏移量。(“时区与 UTC 的偏移”的描述具有误导性,IMO。)

.NETGetUtcOffset返回要添加到UTC时间以达到本地时间的偏移量,这是 IMO 更传统的方法。基本上,这只是一个不同的参考点。

请注意,如果您使用的是 .NET 3.5 或更高版本,您应该真正使用TimeZoneInfo而不是TimeZone.

于 2012-09-25T11:23:50.590 回答