Angular JS - 提交到$ http时的日期更改 - 时区问题

Hol*_*ley 16 javascript date-format timezone-offset angularjs angular-ui-bootstrap

我有一个奇怪的问题,Date当它通过$ http.put传递给API时发生了变化,我怀疑是时区问题:

Datepicker触发ng-change事件 - console.log:

Tue Jun 10 2014 00:00:00 GMT+0100 (GMT Summer Time)

使用Angular $ http.put传递给API ...

当它击中提琴手时:

StartDate=2014-06-09T23:00:00.000Z

如您所见,日期从6月10日到6月9日.

我怎样才能阻止这种更改日期?这是导致变化的时区吗?API和客户端都在Localhost上运行.

除此之外:

当第二次单击该字段并选择了datepicker启动/日期时,第二次出现问题:

CONSOLE.LOG:

Wed Aug 06 2014 22:00:00 GMT+0100 (GMT Summer Time)

收到的提琴手数据:

StartDate=2014-08-06T21:00:00.000Z

Fla*_*nno 12

我认为这是一个TZ问题,b/c你GMT+0100和你之间的差异StartDate=2014-06-09T23:00:00.000Z5小时.

.

问题:

您当地的时间目前是BST(英国夏令时),相当于GMT +1

这将是您进行API调用时的默认时间.

但是,API是由Google在加利福尼亚州编写的,而且它们是以自我为中心的.因此,他们会自动转换时间,因为您没有提供任何date格式化"说明".

换句话说,Chrome浏览器为你做的很好的转换,当您打印到console.log(),但是当你做你的$http.put,,没有给你明确的格式,使用它的默认TZ(这是进行呼叫PST)

.

解析度

您需要强制将日期格式设置为您的语言环境.

  • 我想你也可以在你的`<head> <script src ="angular-locale_en-uk.js"> </ script>中使用语言环境文件脚本...... (2认同)
  • 非常感谢,这似乎有效:`StartDate = $ filter('date')(StartDate,'medium');` (2认同)