我正在从我的服务器检索日期时间,如下所示:
"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
。