2014-02-06 60 views
0

我一直在抨擊Google和SO,並且沒有到任何地方,但我確信它已被回答了一百次,並且只是被埋沒了。Python:時間轉換

我從一個SOAP服務接收時,需要將其轉換爲在時區偏移指定的時間,所以

2014年2月6日13:30:00-05:00

應該

2014年2月6日08:30:00

這樣我就可以格式化並顯示該事件的正確時間。

我一直在玩dateutil和pytz無濟於事。任何人都可以指出我應該在哪裏看?我發現的一切都改變了時區信息,但它不會將小時改變到它所屬的位置。

+0

'from dateutil import parser','parser.parse('2014-02-06 13:30:00 - 00:00)'開箱即用。你從那裏錯過了哪一步? –

+0

工作正常,但我不明白是如何讓小時改變。日期時間對象dateutil返回仍然給我13,而不是8。 –

回答

4

dateutil處理格式直開箱:

from dateutil import parser 

dt = parser.parse('2014-02-06 13:30:00-05:00') 

現在你有一個時區感知datetime.datetime()值,包括顯示它作爲UTC ISO8601時間戳:

from dateutil import tz 

print dt.astimezone(tz.tzutc()).isoformat(' ') 

它使用datetime.datetime.astimezone()將具有時區意識的datetime值轉換爲UTC時區。

演示:

>>> from dateutil import parser 
>>> from dateutil import tz 
>>> dt = parser.parse('2014-02-06 13:30:00-05:00') 
>>> print dt.astimezone(tz.tzutc()).isoformat(' ') 
2014-02-06 18:30:00+00:00 

這包括時區(的+00:00)偏移量,則可以使用datetime.datetime.strftime() method如果需要的話,以不同的方式格式化的字符串。