服务器端和客户端的时区偏移量不同

时间:2012-12-12 11:33:00

标签: javascript asp.net timezone-offset

我正在开发一个Web应用程序,其中日期时间以UTC格式存储在数据库中。现在,当我检索要在UI中显示的日期时间时,我必须将日期时间转换为用户使用应用程序的特定时间。

为了将时间从UTC转换为特定的当地时间,我正在做一些演示研究。我找到了两种转换时间的方法。一个来自服务器端,另一个来自客户端。在服务器端我使用ASP.NET,在客户端我使用JavaScript。但问题是答案不一样。

我正在给代码。

服务器端:

Label1.Text = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).ToString();

客户方:

$(document).ready(function () {
    var offset = new Date().getTimezoneOffset();
    $('#Label1').text(offset / 60);
});

在服务器端代码的情况下,它在标签中显示05:30:00。 在客户端代码的情况下,它在标签中显示-5.5。

我的问题是为什么这两个UTC偏移量不相同?

2 个答案:

答案 0 :(得分:1)

偏移的格式不同。
服务器端示例似乎是一个类似Date的对象。客户端版本似乎是int330)。

但这些中的值似乎匹配。

查看the specification,您的服务器端代码返回一个TimeSpan对象,while your JavaScript确实返回一个整数。

答案 1 :(得分:0)

这只是一种格式化的东西。如果您的偏移量为+5:30,那么getTimezoneOffset将返回330,这是添加到当地时间以获得UTC的分钟数。

如果您将时间作为自1970-01-01T00:00:00Z以来的毫秒值传递,那么您可以直接将其提供给Date构造函数:

var localDate = new Date(timevalue);

要返回等效的UTC时间值,请使用getTime

var UTCTimeValue = localDate.getTime();

Javascript日期对象使用带有系统时区偏移的UTC时间值来返回本地日期和时间值(例如,对于getDategetHours等),或者如果调用UTC方法则返回UTC值(例如getUTCDategetUTCHours等)。