Ecco una soluzione stdlib:
>>> from datetime import datetime
>>> from email.utils import mktime_tz, parsedate_tz
>>> datetime.fromtimestamp(mktime_tz(parsedate_tz(u"Fri, 16 Jul 2010 07:08:23 -0700")))
datetime.datetime(2010, 7, 16, 16, 8, 23) # your local time may be different
Vedi anche, Python: parsing date with timezone from an email.
Nota: fromtimestamp()
potrebbe non riuscire se il fuso orario locale aveva compensato in passato (2010) e se non fa uso di un database storico fuso orario sulla piattaforma data UTC diverso. Per risolvere il problema, è possibile utilizzare tzlocal.get_localzone()
, per ottenere un oggetto tzinfo pytz
che rappresenta il fuso orario locale. pytz
fornisce l'accesso al database tz in maniera portatile:
>>> timestamp = mktime_tz(parsedate_tz(u"Fri, 16 Jul 2010 07:08:23 -0700"))
>>> import tzlocal # $ pip install tzlocal
>>> str(datetime.fromtimestamp(timestamp, tzlocal.get_localzone()))
'2010-07-16 16:08:23+02:00'
potete inserire quello che hai fino ad ora per il codice? – bstpierre