2

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

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

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

4

1 回答 1

2

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

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

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

如果您的时间位于特定时区,那么您应该提供当时有效的相应时区偏移量。例如,如果您的时间在美国东部时区,那么此时它将比 UTC 晚 4 小时,因此您可以将其指定为2013-07-22T22:00:48.860-04:00.

于 2013-11-01T16:30:10.927 回答