我正在处理需要处理日期和时间的AngularJS项目。我注意到当我使用$ http.get()来获取日期的JSON提要时,在Chrome中,AngularJS会将日期转换为与客户端时区匹配,但在Internet Explorer中,日期不会被调整,然而,时区信息仍然被添加,就像它已被调整一样(糟糕的做事方式,因为它有效地破坏了日期/时间数据)。
一些例子:
以下是数据的示例:
[
{
"StartDate":"2014-05-21T09:30:00.000Z",
"EndDate":"2014-05-21T13:00:00.000Z"
}
]
所以这是一个从21/03/2014上午9:30到下午21/03/2014下午1:00的活动。
如果我像这样写$http.get()
:
$http.get('data_source')
.success(function(data) {
console.log(data);
});
我得到以下内容:
IE11:Fri Dec 19 2014 09:00:00 GMT+1100 (AUS Eastern Daylight Time)
Chrome:Fri Dec 19 2014 20:00:00 GMT+1100 (AUS Eastern Daylight Time)
Firefox:2014-12-18T22:00:00.000Z
唯一可以远程传递给我的是Chrome - 它通过向UTC日期添加11小时来转换为AEDT时区。 IE正在将时区更改为AEDT而不调整时间,Firefox正在做的事情是一个谜,它似乎将日期视为已经通过网络发送为UTC,然后将其转换回UTC。 / p>
有人可以向我解释一下地球上到底发生了什么吗?为什么不同,我如何标准化日期处理?
答案 0 :(得分:0)
您可以尝试为响应数据调用toString()方法。
$http.get('data_source').success(function(data) {
// if i understand you correctly and data seems is a field in your json in ISO format ~ 2014-05-21T13:00:00.000Z
$scope.data = new Date(data).toString();
});
似乎它在IE,Chrome和Firefox中同样有效。