javascript - AngularJS 中的时区在 ie9 文档模式下不正确

标签 javascript date angularjs datetime timezone

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

"created":"2013-07-22T22:00:48.860"

在我的 html 中,我使用这个 Angular 声明:

{{createdDateTimeShortString(currentEvent.created) | date:'M/d H:mm'}}

在我的 Controller 中我有这个功能:

  $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

关于javascript - AngularJS 中的时区在 ie9 文档模式下不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19728386/

相关文章:

javascript - 检查每个元素并根据父元素更改它 (JavaScript/jQuery)

javascript - 原型(prototype)悬停内容和子项

mysql - 保存或更新时自动插入日期列之间经过的天数

java - 使用 TimeZone 解析日期 (java/android)

javascript - ng-inspector 会减慢并导致页面崩溃。在哪里看

javascript - MarkLogic 9 cts.parse 未正确解析查询

javascript - 如何使用 jquery ajax 和 Php 在单击按钮时加载页面?

java - 在 API 中使用 java.util.Date 的充分理由

asp.net-mvc - 如何使用 Angular 路由来嵌套 3 个 mvc Razor 模型

ruby-on-rails - 设计确认链接将用户重定向到 heroku 域而不是自定义域