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



我正在从我的服务器检索日期时间,如下所示:

"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浏览器模式但标准文档模式,那么我会得到预期的时间。

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

您的日期采用ISO8601格式,这很好。 不过,这种格式有多种变体。

当您将输入指定为 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

相关内容

  • 没有找到相关文章

最新更新