2016-11-03 146 views
0

鑑於表示UTC時間下面的Python DateTime對象:的Python:將UTC時間,本地時間給UTC偏移

2016年9月15日22:13:03-2:00

我想以獲得相應的本地時間日期時間,其中施加UTC偏移:

2016年9月15日20點13分03秒

我希望能找到datetime模塊的方法,這是能夠做到這一點,但我沒有成功。任何幫助非常感謝。

問候

+0

爲什麼會UTC時間的調整來表達?除此之外,這個對象是如何構造的?這真的是一個'datetime.datetime'對象,或者只是一個你需要解析和轉換的字符串? – ShadowRanger

+0

使用什麼python版本? – davedwards

+0

我正在使用Python 2.7。這是一個日期時間對象。 – Aghie

回答

0

我不知道這是不是最好的答案,但這裏是我對你的。通常我不會這麼做,因爲它是最好使用UTC時間和轉換

這裏有一個例子:

value = datetime.datetime.strptime(str(utc_datetime), '%Y-%m-%d %H:%M:%S').replace(tzinfo=pytz.utc) 
value = value.astimezone(pytz.timezone("America/Los_Angeles")) 

我無法使用日期時間的語法有點過所以我繼續使用dateutil.parser將其轉換爲一個DateTime對象

>>> from dateutil.parser import parse 
>>> val = parse('2016-09-15 22:13:03-2:00') 

還有其他的方法來設置一個DateTime對象,UTC,但我覺得pytz是最容易

>>> import pytz 
>>> utc_val = val.replace(tzinfo=pytz.utc) 

這是這兩個值的輸出。在這裏,我搶三角洲和減去它

>>> val, utc_val 
(datetime.datetime(2016, 9, 15, 22, 13, 3, tzinfo=tzoffset(None, -7200)), datetime.datetime(2016, 9, 15, 22, 13, 3, tzinfo=<UTC>)) 
>>> 
>>> delta = val - utc_val 

我刪除了tzinfo因爲這是一個轉換的日期時間值

>>> local_dt = (val - delta).replace(tzinfo=None) 
>>> local_dt 
datetime.datetime(2016, 9, 15, 20, 13, 3) 
>>> str(local_dt) 
'2016-09-15 20:13:03' 
相關問題