已經有,回答瞭如何「美國/洛杉磯」轉換爲「太平洋時間(美國&加拿大)」的問題。不過,我想將「美國/太平洋」和其他過時的時區轉換爲Rails TimeZone。我無法在圖書館找到任何可以幫助我完成此任務的內容。如何從廢棄的TZInfo標識符獲取Rails TimeZone名稱?
5
A
回答
7
從軌道ActiveSupport::TimeZone docs:
與Active支持捆綁的TZInfo的版本只包含必要的支持時區定義的區域定義類。如果您需要使用TimeZone未定義的區域,則需要安裝TZInfo gem(如果最新版本的gem已在本地安裝,則將使用該版本代替捆綁的版本。)
就我個人而言,我認爲Rails時區很愚蠢。它們被任意限制於Rails所描述的「146個區域的有意義的子集」。但他們無法解釋他們如何確定哪些區域「有意義」,哪些區域被丟棄。
標識符,如「美國/太平洋」被稱爲在TZDB數據「鏈接」或「別名」。我可以看到,也許它們可能從Rails中省略,但還有許多其他真實世界時區完全缺失。
我每天看到的唯一的地方Rails的時區標識符在現實世界中是Twitter的的API中。另一方面,IANA/TZDB標識符無處不在。
我能提供的最好建議是忘掉Rails的時區,並且只使用了Ruby TZInfo Gem直接。它具有包括別名在內的所有區域的完整TZDB實施。
如果您確實必須繼續使用Rails區域,則可以先使用TZInfo將別名解析爲實際區域,然後查看該區域是否位於Rails MAPPING
字典中。例如:
"US/Pacific" => "America/Los_Angeles" (via TZInfo)
"America/Los_Angeles" => "Pacific Time (US & Canada)" (via Rails MAPPING)
我相信當你通過TZInfo載入「美國/太平洋」,它將被繼承作爲LinkedTimezoneInfo
對象,所以你可以從那裏使用link_to_identifier
屬性。
1
相關問題
- 1. 從tzInfo TimeZone獲取國家?
- 2. Ruby TZInfo和Rails ActiveSupport :: Timezone UTC_offset的差異
- 3. 如何獲取Gson/Json中對象標識符的名稱?
- 4. 如何從字符串「HH:MM:SS」獲取TimeZone?
- 5. 如何從.p12文件獲取分發標識的名稱
- 6. 如何從表中獲取用戶標識的名稱,並從另一個表中獲取用戶標識?
- 7. 如何獲取標記的名稱或標識JVectorMap
- 8. 如何獲取不帶類,標識,名稱的標籤內容?
- 9. 如何從Button獲取標籤名稱?
- 10. 如何從鍵盤佈局標識符獲取鍵盤佈局名稱?
- 11. 獲取模塊名稱或標識
- 12. 獲取ASN.1標識符的合理名稱
- 13. 如何獲取iOS 6中默認日曆的名稱/標識
- 14. 如何在.NET中標記外部類型/方法爲廢棄/廢棄?
- 15. 我如何從JavaScript中的cityname/timezone獲取timezoneid/datezone/timezone
- 16. 如何在選擇名稱時獲取組標識
- 17. 會話廢棄
- 18. LIBXML - 如何獲取標籤的名稱?
- 19. 如何從python字符串獲取命名變量的名稱
- 20. foursquare api從類別名稱中獲取類別標識
- 21. 從容器名稱獲取碼頭容器標識
- 22. 從取座標獲取位置名稱
- 23. 如何從OpenID/Google獲取唯一標識符?
- 24. 預計標識符或「(」之前「作廢」
- 25. 如何從Facebook獲取ParseUser的名稱?
- 26. 如何從Laravel的用戶標識中獲取用戶名?
- 27. 如何從類名中獲取元素的標識
- 28. split(':',$ currenttime);廢棄的
- 29. 廢棄的錯誤
- 30. 如何動態獲取標籤名稱?
''''TZInfo :: Timezone.get('US/Pacific')。link_to_identifier''NoMethodError。 – ajbraus
@ajbraus - 'America/Vancouver'是一個獨特的區域,而不是鏈接。所以它不會有'link_to_identifier'屬性。但是,唉,這不是Rails「有意義」區域列表中的區域。所以你可以在這裏做的事情不多,除了只使用TZInfo gem,而不是*嘗試將它們映射回Rails區域。 –
@ajbraus - 看到您更新了您的評論以顯示「美國/太平洋」 - 這確實是一個鏈接。 –