我知道如何圍繞做到這一點的其他方式......這將是:如何將RFC822轉換爲python datetime對象?
>>> dt.rfc822()
'Sun, 09 Mar 1997 13:45:00 -0500'
我知道如何圍繞做到這一點的其他方式......這將是:如何將RFC822轉換爲python datetime對象?
>>> dt.rfc822()
'Sun, 09 Mar 1997 13:45:00 -0500'
In [1]: import rfc822 # This only works for python 2 series
In [2]: rfc822.parsedate_tz('Sun, 09 Mar 1997 13:45:00 -0500')
Out[2]: (1997, 3, 9, 13, 45, 0, 0, 1, 0, -18000)
在python3 parsedate_tz已經轉移到email.utils
>>> import email.utils # this works on Python2.5 and up
>>> email.utils.parsedate_tz('Sun, 09 Mar 1997 13:45:00 -0500')
(1997, 3, 9, 13, 45, 0, 0, 1, -1, -18000)
如果剝去時區,你可以這樣做:
datetime.datetime.strptime('Sun, 09 Mar 1997 13:45:00', '%a, %d %b %Y %H:%M:%S')
這對大多數區域設置不起作用。 – 2009-10-15 03:52:21
這似乎沒有時區 – 2013-11-07 12:16:43
他特別提出瞭如何爲rfc822日期/時間做這件事。由於rfc822包含時區,因此您的答案並不能解決問題。更糟糕的是,實際上它返回的時間不同,具體取決於運行代碼的時區以及生成字符串的時區(這在Web應用程序中可能差別很大)。 – 2017-07-17 06:11:27
從python 3.3起,有email.utils.parsedate_to_datetime(date)
>>> from email.utils import parsedate_to_datetime
>>> datestr = 'Sun, 09 Mar 1997 13:45:00 -0500'
>>> parsedate_to_datetime(datestr)
datetime.datetime(1997, 3, 9, 13, 45, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400)))
我以爲rf822已被棄用? – Udbhav 2009-10-14 20:45:13
謝謝,修復它。即使在2.6中也沒有棄用警告:( – 2009-10-14 20:59:51
)上述技術不會返回'datetime',而是'tuple'。完整的代碼是'datetime.datetime.fromtimestamp(email.utils.mktime_tz(email.utils.parsedate_tz( rfcdate)),pytz.utc)'。Ref:http://parand.com/say/index.php/2008/02/11/parsing-and-normalizing-dates-with-timezones-in-python/ – AppleGrew 2012-08-11 14:04:34