2012-02-08 146 views
1

我的Django網絡應用程序的一部分是時區敏感的會議調度程序。用於Python的可靠時區庫或Web服務

目前它使用pytz,但這有一些嚴重的缺點。

例如,對於莫斯科的時區是目前關閉1小時,因爲近期梅德韋傑夫總統決定取消在俄羅斯切換到冬季時間(http://en.ria.ru/russia/20111030/168271560.html

另一個嚴重的問題是,名單它提供的時區對用戶來說非常長並且非常不友好,例如「亞洲/香格里拉」。提供一些時區選擇組合框的大多數嚴肅的網站有一個更短的名單...

我正在尋找一些可靠的解決方案,爲用戶提供準確的時區和友好的時區選擇,無論是作爲一個圖書館只要在俄羅斯有上述重大變化,或者作爲可靠和免費的網絡服務,就會更新。

+0

請注意,儘管有些文章聽起來像是這樣,但俄羅斯決定不去改變去年秋天的時間是大約六個月前 - 幾乎是一年前的時間。我想知道pytz的最新開發版本是否正確。 – 2012-02-09 00:00:52

回答

0

最近,我在reddit上看到times這是一個旨在輕鬆處理日期時間對象和時區的庫。

也許這個圖書館沒有考慮到你提到的關於莫斯科時區的問題。然而,由於該庫正在積極開發(最後一次更改,不到一天前提交),我想說的主要開發者願意幫忙,接受補丁等

1
  1. 您需要以獲得版本pytz,該版本包含最新的Olson/Eggert數據庫,該數據庫尊重俄羅斯最近的時區策略更改。然而,顯然維護人員正在進行版權訴訟,所以這可能不會發生一段時間。 http://en.wikipedia.org/wiki/Tz_database#Maintenance我想你可以得到pytz來源並自己貢獻補丁。但據我所知,所有或幾乎所有運行良好的時區系統都基於Olson/Eggert系統。

  2. 您可以通過使用提供的各種查找來簡化用戶體驗。 pytz.common_timezones是僅對用戶最重要的時區標識符的修剪列表。 pytz.country_names是國家代碼的國家代碼字典(用英文)顯示給用戶。 pytz.country_timezones是一個國家代碼字典,以該國家的時區列表。通過使用這些,您可以讓用戶選擇他們的國家,然後選擇該國家/地區的最適用時區,也可以選擇在common_timezones列表中顯示選項。

  3. 可能絕對最簡單的用戶界面用於選擇我所看到的時區是世界地圖,您可以點擊您的位置並找出可能出現的Olson/Eggert時區。 Ubuntu中的一款聲稱基於http://www.geonames.org/的系統。除此之外,我認爲pytz或者times jcollado模塊鏈接的效果差不多。政治時區是複雜的,因此將有任何代碼與他們合作。

也請考慮對自動確定瀏覽器的時區的話題my answer to an earlier question。在評論中鏈接的JavaScript中有一種通常正確的方法。