tôi biết làm thế nào để làm điều này theo cách khác xung quanh ... nó sẽ là:Làm cách nào để chuyển đổi RFC822 thành đối tượng datetime datthon?
>>> dt.rfc822()
'Sun, 09 Mar 1997 13:45:00 -0500'
tôi biết làm thế nào để làm điều này theo cách khác xung quanh ... nó sẽ là:Làm cách nào để chuyển đổi RFC822 thành đối tượng datetime datthon?
>>> 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)
trong python3 parsedate_tz đã chuyển sang 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)
Nếu bạn Tước múi giờ, bạn có thể làm như sau:
datetime.datetime.strptime('Sun, 09 Mar 1997 13:45:00', '%a, %d %b %Y %H:%M:%S')
Điều này sẽ không hoạt động đối với hầu hết các thiết lập miền địa phương. –
Điều này dường như không có múi giờ –
Ông đặc biệt hỏi làm thế nào để làm điều đó cho ngày/giờ rfc822. Vì rfc822 bao gồm múi giờ, bạn trả lời không giải quyết được. Thậm chí tệ hơn, nó thực sự trả về một thời gian khác, tùy thuộc vào múi giờ mã được chạy, và múi giờ mà chuỗi được tạo ra (trong đó các ứng dụng web có thể thay đổi rất nhiều). –
Số python 3.3 có 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)))
Tôi nghĩ rằng rf822 không được dùng nữa? – Udbhav
Cảm ơn, đã sửa nó. Không có cảnh báo không dùng nữa ngay cả trong 2.6: ( –
Kỹ thuật trên không trả về 'datetime', thay vì' tuple'. Mã hoàn chỉnh là '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