2012-12-12 51 views
0

我有一個數據庫中的蟒蛇datetime對象,並將其存儲在UTC時區:的Python:轉換爲本地時間

2012-10-24 14:10:00+00:00

我可以把它轉換爲本地時間,使用

start_localtime = start.replace(tzinfo=tz.gettz('Europe/Zurich')) 

start_localtime現在是:2012-10-24 14:10:00+02:00

這很好,在技術上。但我需要的時區爲+00:00,所以小時將是16(+2小時)。

有沒有辦法做到這一點?

+1

14:10:00 UTC爲16:10:00 + 02:00在蘇黎世。你想要它是16:10:00 + 00:00?這完全是完全不同的時間。 –

+0

我知道。但我需要用時間對象做一些計算,而且他們沒有時間區。 – Daniel

+0

那麼爲什麼不直接調用'start_localtime.time()'?它返回'datetime.time(16,10)'(無時區)。 –

回答

2

你有沒有嘗試過使用datetime.astimezone()?

http://docs.python.org/2/library/datetime.html#datetime.datetime.astimezone

我想出了一個辦法做到這一點使用pytz庫:http://pypi.python.org/pypi/pytz/

>>> import pytz 
>>> from pytz import timezone 
>>> a = datetime.now(timezone("UTC")) 
>>> b = a.astimezone(timezone("Europe/Zurich")) 
>>> a 
datetime.datetime(2012, 12, 12, 10, 39, 20, 158993, tzinfo=<UTC>) 
>>> b 
datetime.datetime(2012, 12, 12, 11, 39, 20, 158993, tzinfo=<DstTzInfo 'Europe/Zurich' CET+1:00:00 STD>) 
>>> b.utcoffset() 
datetime.timedelta(0, 3600) 
+1

是的。結果是一樣的:2012-10-24 14:10:00 + 02:00 – Daniel

+0

我更新瞭解決方案,使用pytz庫包含一些示例代碼,希望有所幫助。 – Nihathrael