我在C#(服务器)侧以此方法:不正确的时区为Javascript
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的要求):
- 将获得的帐户时间不同记录的片段(在不同的位置有可能)的时间。
- 将会有一个类似时间线的游标,它需要帐户时间(不是当地时间)。
- 会有选项将时间发送回服务器端,所以知道正确的偏移量将使这更容易。
GMT偏移量实际上是我正在处理的应用程序所需要的。是否真的没有办法(或解决)'日期'对象来更新时区? –
@CyberneticTwerkGuruOrc:你错过了这一点 - 那里的*是*没有时区在'日期'对象中。如果你需要从UTC到Mountain Time的偏移量,这相对比较棘手 - 因为你会依靠跨浏览器获取该时区的方式。如果你可以解释(在问题中)更多关于你想要达到的目标,我们可能会帮助你更多。 –
更新了我的开场白。它仍然有点模糊,但我认为这应该涵盖我需要改变时区的原因(以及为什么抵消问题很重要)。我明白'日期'基本上是毫秒,但我只是想知道是否仍然有办法改变偏移量。 –