我有一個數據庫存儲日期時間爲UTC。我需要查詢特定時間的信息,但日期和時間是在當地時間給出的,比如說'歐洲/哥本哈根'。我給了這些爲:python pytz:將本地時間轉換爲utc。本地化似乎並沒有轉換
year = 2012; month = 12; day = 2; hour = 13; min = 1;
所以,我需要把這些轉化爲UTC,所以我可以看看他們在數據庫中。我想用pytz
來做到這一點。我在看localize
:
local_tz = timezone('Europe/Copenhagen')
t = local_tz.localize(datetime.datetime(year, month, day, hour, min))
但我感到困惑localize()
。這是假設那年,等等,是在當地時間給我的?或者,它是否假定它們是以UTC給出的,現在它已將它們轉換爲當地時間?
print t
給我:
2012-12-02 13:01:00+01:00
如此看來,它假定原來的一年,等在UTC;小時現在是13 + 1而不是13。所以我應該怎麼做呢?我已經閱讀了pytz文檔,這並沒有讓我更清楚。它提到很多事情是棘手的,所以我不確定pytz是否真的解決了這些問題。而且,我並不總是知道這些例子是向我展示一些工作還是一些不起作用的東西。
我試圖正常化:
print local_tz.normalize(t)
這給了我同樣的結果打印噸。
編輯:用上面給出的年份等數字,它應該匹配2012-12-2 12:01數據庫中的信息。 (因爲哥本哈根UTC + 1在該日期)
給出的時間爲14:01:00 + 01:00。正確的本地時間是13,utc時間是12. – user984003
@ user984003:啊,對不起,誤讀了第一句。 '.astimezone()'仍然是要走的路,只是相反。 –
是的,第二種方法可行,謝謝。你可以在你的答案中有這個,否則我覺得有點混亂;)我看到我對打印日期感到困惑。 「+01:00」告訴我,它比utc早一個小時,而不是我應該增加一個小時。 – user984003