Javascript 在ie9文档模式下,angularjs中的时区不正确
我正在从服务器检索日期时间,如下所示:Javascript 在ie9文档模式下,angularjs中的时区不正确,javascript,date,angularjs,datetime,timezone,Javascript,Date,Angularjs,Datetime,Timezone,我正在从服务器检索日期时间,如下所示: "created":"2013-07-22T22:00:48.860" 在我的html中,我使用以下有角度的语句: {{createdDateTimeShortString(currentEvent.created) | date:'M/d H:mm'}} 在我的控制器中,我有以下功能: $scope.createdDateTimeShortString = function (date) { if (!date) {
"created":"2013-07-22T22:00:48.860"
在我的html中,我使用以下有角度的语句:
{{createdDateTimeShortString(currentEvent.created) | date:'M/d H:mm'}}
在我的控制器中,我有以下功能:
$scope.createdDateTimeShortString = function (date) {
if (!date) {
return false;
}
var dtime = new Date(date);
return dtime;
};
这正是我在chrome、firefox和ie10中所期望的。
但当我切换到IE9文档模式时,我所有的约会时间都会减少4个小时。
只有文档模式中的更改才能执行此操作。如果我处于IE9浏览器模式,但处于标准文档模式,那么我将获得预期的时间
这是怎么回事?有没有办法解决这一问题,使其在所有浏览器/模式下都能正常工作 您的日期是格式的,这很好。不过,这种格式有多种变体
当您将输入指定为2013-07-22T22:00:48.860
时,时区不是数据的一部分,因此可以对其进行解释。有些浏览器可以将其视为UTC,有些人可能认为它是正在运行的计算机的本地时间。
相反,你应该是具体的。如果时间以UTC为单位,则在字符串末尾添加一个Z
,例如2013-07-22T22:00:48.860Z
如果您的时间位于特定时区,则应提供当时生效的相应时区偏移量。例如,如果您的时间在美国东部时区,那么此时将比UTC晚4小时,因此您可以指定为
2013-07-22T22:00:48.860-04:00
好建议,谢谢。如果我无法控制服务器部分,但我知道时间是UTC,该怎么办。我如何用客户端代码来克服这个问题?当你最初在JavaScript代码中被解析时,你可以尝试在字符串末尾添加一个<代码> z 。你也可以考虑使用。有了它,你可以说moment(yourLocalDate)
,或者moment.utc(yourUtcDate)
加上Z似乎是可行的——IE9给出的日期与其他浏览器一致。我认为现在的问题是,我所有的约会时间都比我认为应该的时间推迟了4个小时。谢谢您的帮助。请尝试时刻(d).toISOString()
或时刻(d).utc().format()
。但是,请再次确保您知道来自服务器的数据是UTC还是其他数据。你不想猜测。我也不太清楚你说的这些引语是什么意思。也许你应该问一个新问题,确切地说明你现在在做什么。