我有一個日期(以UTC毫秒爲單位),我在頁面上顯示(AngularJS 1.4.0),並且用戶希望在東部時間看到它,而不管時區在他們的電腦上設置。調整爲夏令時的日期過濾器
我使用日期過濾器,並從documentation我看到
$filter('date')(date, format, timezone)
時區將用於格式化。它瞭解UTC/GMT和美國大陸時區的縮寫,但對於一般用途,請使用時區偏移量,例如
'+0430'
(格林尼治子午線以東4小時30分鐘)如果未指定,瀏覽器的時區將使用。
使用時間戳從今天起,如果我使用類似
{{ record.Timestamp | date:'HH:mm:ss.sss':'EST' }}
,因爲我希望它寫入時間,但我想我會用一個小時處於關閉狀態時,DST來臨時。我也可以指定'EDT'
,它會提前一個小時的時間,但是有沒有可以使用的時區縮寫,意思是「Eastern」,並且使用日期本身來確定是使用EST還是EDT?或者我需要檢查日期並自己創建一個偏移量:取決於日期是-0500/EST還是-0400/EDT? (它看起來像timezone
只能是一個字符串,而不是一個函數,所以這會使我的自動檢測複雜化)。
任何人想要將顯示硬編碼爲EST或EDT似乎都不太可能 - 他們更希望將時區調整爲DST。
問題在於夏時制沒有普遍遵守。否則,您可以從一月的日期和七月再次檢查'getTimezoneOffset()',並比較當前日期的偏移量,然後適當地使用'EDT'或'EST'。但是,如果代碼將運行在亞利桑那州或夏威夷州,那麼這是行不通的。 –
這聽起來更像是一個問題,可能的解決辦法比原來的問題,對不對?我可能會嘗試類似的東西來確定DST,現在我們不會有任何用戶在這些領域,但_永遠不會說_... – Danny
取決於你認爲的「原始問題」:)。對我而言,真正的問題是日期過濾器使用美國時區縮寫,而不是更爲標準的[IANA列表](https://www.iana.org/time-zones/repository/tz-link.html),不指定DST。我贊同Yaser對MomentJS的回答。 –