我正在从我的服务器检索日期时间:
"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浏览器模式但是标准文档模式,那么我得到预期的时间。
这怎么可能并且有没有办法解决这个问题,所以它适用于所有浏览器/模式?
答案 0 :(得分:2)
您的日期格式为ISO8601,这很好。但是这种格式有多种变体。
当您将输入指定为2013-07-22T22:00:48.860
时,时区不是数据的一部分,因此它可以进行解释。有些浏览器可能会将其视为UTC,有些人可能认为它是运行它的计算机的本地时间。
相反,你应该具体。如果您的时间是UTC,那么请在字符串的末尾添加Z
,例如2013-07-22T22:00:48.860Z
。
如果您的时间位于特定时区,则应提供当时有效的相应时区偏移量。例如,如果您的时间位于美国东部时区,那么 此时 它将比UTC晚4个小时,因此您将其指定为{{1} }。