簡體   English   中英

Angular JS - 提交到$ http時的日期更改 - 時區問題

[英]Angular JS - Date changes when submitting to $http - Timezone issue

我有一個奇怪的問題,當一個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

我認為這是一個TZ問題,b / c你的GMT+0100和你的StartDate=2014-06-09T23:00:00.000Z5小時

問題:

您當地的時間目前是BST(英國夏令時),相當於GMT +1

這將是您進行API調用時的默認時間。

然而,API是由谷歌在加利福尼亞州編寫的,而且它們是以自我為中心的。 因此,他們會自動轉換時間,因為您沒有提供任何date格式化“說明”

換句話說,當您打印到console.log()時,Chrome會很好地為您完成轉換,但是當您創建$http.putAngular會在沒有顯式格式化的情況下使用它的默認TZ進行調用(這是PST

解析度

您需要強制將日期格式設置為您的語言環境。

  • 角度模板

     {{ date_expression | date : 'yyyy-MM-dd HH:mm:ss'}} 
  • 在JavaScript中

     $filter('date')(date, 'yyyy-MM-dd HH:mm:ss') 
  • 使用本地化

     <html> <head> <title>My Angular page</title> <script src="angular-locale_en-uk.js"></script> ... </head> <body> ... </body> </html> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM