AngularJS在浏览器中处理日期不一致

时间:2014-12-15 04:42:17

标签: javascript angularjs datetime

我正在处理需要处理日期和时间的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>

有人可以向我解释一下地球上到底发生了什么吗?为什么不同,我如何标准化日期处理?

1 个答案:

答案 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中同样有效。