我在C# (服务器)端有这样的方法:
protected double GetAccountTime()
{
return ((DateTime)unit.SomeMethod(DateTime.UtcNow))
.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc))
.TotalMilliseconds;
}我的本地机器时间是东方的,但我的应用程序的帐户时间是山区。所以我想把它改成东部到山区的时间。unit.SomeMethod(...)只获取当前本地时间(东方)并将其转换为帐户时间(山区)。
在Javascript方面:
var now = new Date(<%=GetAccountTime()%>);
alert(now);//doesn't consider the time to be UTC, need to convert
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
alert("UTC: " + now_utc);第一个警告语句给我Thu Jun 12 2014 09:30:42 GMT-0400 (Eastern Standard Time),这是不正确的。我将时间转换为UTC,所以第二个警告语句给了我UTC: Thu Jun 12 2014 13:30:42 GMT-0400 (Eastern Standard Time)。就时间而言,这是正确的,但时区仍然是东方的。有谁知道我怎么解决这个问题吗?
我的应用程序是做什么的(应@JonSkeet的请求):
发布于 2014-06-12 19:35:21
Date对象没有时区的任何概念。它总是代表自Unix时代以来的几毫秒。
你不需要做任何转换-你有正确的时间点。(实际上,用Date在时区之间进行转换是没有意义的,因为它只是一个时间点。)
如果您关心字符串表示形式,可以调用toUTCString()。toString()函数将始终使用系统本地时间。
例如,在Chrome控制台中:
> var now = new Date();
> now.toString()
"Thu Jun 12 2014 20:35:33 GMT+0100 (GMT Daylight Time)"
> now.toUTCString()
"Thu, 12 Jun 2014 19:35:33 GMT"编辑:现在我们有了更多的信息:
如果您要在.NET方面做更多的工作,您可能也想看看我的野田时间计划。
https://stackoverflow.com/questions/24192558
复制相似问题