2010-11-01 167 views
11

我正在嘗試獲取EDT時區中的當前時間。Python - 特定時區的日期時間

print datetime.time(datetime.now()).strftime("%H%M%S") 

datetime.now([TZ])有一個可選的TZ說法,但它必須是類型datetime.tzinfo的......我還沒有本能夠找出如何定義一個tzinfo對象爲東時區...似乎它應該很簡單,但我不能導出一個額外的圖書館。

回答

20

我對EDT時區並不十分反感,但這個例子應該可以滿足您的目的。

import datetime 

datetime.datetime.now必須通過應該是datetime.tzinfo類型的時區信息。這是一個實現了一些所需功能的類。因爲這是一個例子,所以我在這裏沒有提供節電細節。

class EST(datetime.tzinfo): 
    def utcoffset(self, dt): 
     return datetime.timedelta(hours=-5) 

    def dst(self, dt): 
     return datetime.timedelta(0) 

現在你可以使用它來獲取帶有時區的正確性信息:

print datetime.datetime.now(EST()) 

輸出:

2010-11-01 13:44:20.231259-05:00 
+0

感謝 - 令人沮喪的是你必須創建一個整體類來指定一個時區(vs只是傳遞一個簡單的變量) – wuntee 2010-11-01 18:58:32

+0

@wuntee:那不是真的。這是爲了解釋。 adw的答案包含可用於傳遞tzinfo信息的庫 - pytz。事實上,這將是重用和dst等方面已由pytz模塊提供。 – pyfunc 2010-11-01 19:05:33

8

tzinfo類只定義了一個接口,您將需要實現(請參閱文檔中的示例)或使用實現它的第三方模塊,如pytz

編輯:對不起,我錯過了你不想導入另一個庫。

+0

+1提供pytz模塊,因爲我專注於解釋tzinfo。 – pyfunc 2010-11-01 19:07:01

相關問題