2017-04-13 116 views
1

我這種格式有一個日期=時保留時區「星期二,2017年2月28日18:30:32 GMT」如何日期時間字符串轉換爲DateTime對象

我可以將其轉換爲datetime對象使用time.strptime("Tue, 28 Feb 2017 18:30:32 GMT", "%a, %d %b %Y %H:%M:%S %Z")但datetime對象不跟蹤時區。

我希望能夠知道時區。我怎樣才能做到這一點?任何幫助深表感謝。

回答

0
from dateutil import parser 
parser.parse("Tue, 28 Feb 2017 18:30:32 GMT") 

datetime.datetime(2017,2,28,18,30,32,tzinfo = tzutc())

+0

謝謝,我知道我可以在一行中使用dateutil.parser來實現這一點。我試圖用標準庫實現這一點,並使用外部庫作爲最後的手段。 – user6037143

+0

在你的問題中,你表明你願意使用time.strptime,它必須被導入,除非它沒有工作。 dateutil也是一個非常常見的庫,除了這個工作外,根本不是一個沉重的依賴。如果您不接受任何使用圖書館的答案,或者特別不接受任何使用任何圖書館的答案(除了時間以外),請在下次問題中詳細說明。 –

+0

哎呀!我的意思是標準庫(即時間),而不必安裝外部庫(即dateutil.parser)。 – user6037143

0

這個問題實際上是更復雜比它可能首先出現。我知道時區名稱並不是獨一無二的,而且有很多東西。但是,如果您需要處理的人數可控,並且您的輸入僅限於該格式,那麼這種方法可能對您有好處。

>>> from dateutil.parser import * 
>>> tzinfos = {'GMT': 0, 'PST': -50, 'DST': 22 } 
>>> aDate = parse("Tue, 28 Feb 2017 18:30:32 GMT", tzinfos=tzinfos) 
>>> aDate.tzinfo.tzname(0) 
'GMT' 
>>> aDate = parse("Tue, 28 Feb 2017 18:30:32 PST", tzinfos=tzinfos) 
>>> aDate.tzinfo.tzname(0) 
'PST' 
>>> aDate = parse("Tue, 28 Feb 2017 18:30:32 DST", tzinfos=tzinfos) 
>>> aDate.tzinfo.tzname(0) 
'DST' 

裝入替代的時區的縮寫成字典,在這種代碼稱爲tzinfos然後解析程。從日期表達式解析的時區在所示結構中變得可用。

其他日期項目可用,如您所期望的。

>>> aDate.day 
28 
>>> aDate.month 
2 
>>> aDate.year 
2017 
相關問題