1

我正在开发一个 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 偏移量不一样?

4

2 回答 2

1

偏移量的格式不同。
服务器端示例似乎是一个Date-like 对象。客户端版本似乎是int( 330)。

不过,这些值似乎匹配。

查看规范,您的服务器端代码返回一个TimeSpan对象,而您的 JavaScript确实返回一个整数。

于 2012-12-12T11:40:31.090 回答
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 方法(例如getUTCDategetUTCHours等),则返回 UTC 值。

于 2012-12-12T11:51:46.863 回答