我這種格式有一個日期=時保留時區「星期二,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對象不跟蹤時區。
我希望能夠知道時區。我怎樣才能做到這一點?任何幫助深表感謝。
我這種格式有一個日期=時保留時區「星期二,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對象不跟蹤時區。
我希望能夠知道時區。我怎樣才能做到這一點?任何幫助深表感謝。
from dateutil import parser
parser.parse("Tue, 28 Feb 2017 18:30:32 GMT")
datetime.datetime(2017,2,28,18,30,32,tzinfo = tzutc())
這個問題實際上是更復雜比它可能首先出現。我知道時區名稱並不是獨一無二的,而且有很多東西。但是,如果您需要處理的人數可控,並且您的輸入僅限於該格式,那麼這種方法可能對您有好處。
>>> 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
謝謝,我知道我可以在一行中使用dateutil.parser來實現這一點。我試圖用標準庫實現這一點,並使用外部庫作爲最後的手段。 – user6037143
在你的問題中,你表明你願意使用time.strptime,它必須被導入,除非它沒有工作。 dateutil也是一個非常常見的庫,除了這個工作外,根本不是一個沉重的依賴。如果您不接受任何使用圖書館的答案,或者特別不接受任何使用任何圖書館的答案(除了時間以外),請在下次問題中詳細說明。 –
哎呀!我的意思是標準庫(即時間),而不必安裝外部庫(即dateutil.parser)。 – user6037143