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