我正在开发一个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偏移量不相同?
答案 0 :(得分:1)
偏移的格式不同。
服务器端示例似乎是一个类似Date
的对象。客户端版本似乎是int
(330
)。
但这些中的值似乎匹配。
查看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时间值来返回本地日期和时间值(例如,对于getDate,getHours等),或者如果调用UTC方法则返回UTC值(例如getUTCDate,getUTCHours等)。