在ie9文档模式中,angularjs中的时区不正确

时间:2013-11-01 14:07:02

标签: 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) {
            return false;
        }
        var dtime = new Date(date);
        return dtime;
    };

这与我在chrome,firefox和ie10中的预期完全一样。 但是当我切换到IE9文档模式时,我的所有日​​期都会丢失4个小时。 只有文档模式的更改才能执行此操作。如果我在IE9浏览器模式但是标准文档模式,那么我得到预期的时间。

这怎么可能并且有没有办法解决这个问题,所以它适用于所有浏览器/模式?

1 个答案:

答案 0 :(得分:2)

您的日期格式为ISO8601,这很好。但是这种格式有多种变体。

当您将输入指定为2013-07-22T22:00:48.860时,时区不是数据的一部分,因此它可以进行解释。有些浏览器可能会将其视为UTC,有些人可能认为它是运行它的计算机的本地时间。

相反,你应该具体。如果您的时间是UTC,那么请在字符串的末尾添加Z,例如2013-07-22T22:00:48.860Z

如果您的时间位于特定时区,则应提供当时有效的相应时区偏移量。例如,如果您的时间位于美国东部时区,那么 此时 它将比UTC晚4个小时,因此您将其指定为{{1} }。