[英]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.000Z
是5小時 。
。
您當地的時間目前是BST(英國夏令時),相當於GMT +1
這將是您進行API調用時的默認時間。
然而,API是由谷歌在加利福尼亞州編寫的,而且它們是以自我為中心的。 因此,他們會自動轉換時間,因為您沒有提供任何date
格式化“說明” 。
換句話說,當您打印到console.log()
時,Chrome會很好地為您完成轉換,但是當您創建$http.put
, Angular會在沒有顯式格式化的情況下使用它的默認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.