Jeśli jest to twój lokalny stref czasowych oraz zasady strefy czasowej są takie same dla danego czasu, ponieważ są one teraz następnie można użyć roztworu stdlib tylko (z wyjątkiem niektórych krawędzi przypadków):
#!/usr/bin/env python
from email.utils import parsedate_tz, mktime_tz
from datetime import datetime
timestamp = mktime_tz(parsedate_tz("Tue, 12 Jun 2012 14:03:10 GMT"))
print(datetime.fromtimestamp(timestamp))
# -> 2012-06-12 10:03:10
W przeciwnym razie potrzebujesz danych z historycznej bazy danych strefy czasowej, aby uzyskać poprawne przesunięcie utc. pytz
module zapewnia dostęp do the tz database:
#!/usr/bin/env python
from email.utils import parsedate_tz, mktime_tz
from datetime import datetime
import pytz # $ pip install pytz
timestamp = mktime_tz(parsedate_tz("Tue, 12 Jun 2012 14:03:10 GMT"))
eastern_dt = datetime.fromtimestamp(timestamp, pytz.timezone('America/New_York'))
print(eastern_dt.strftime('%a, %d %b %Y %H:%M:%S %z (%Z)'))
# -> Tue, 12 Jun 2012 10:03:10 -0400 (EDT)
Uwaga: POSIX timestamp
jest taka sama na całym świecie, czyli lokalna strefa czasowa nie ma znaczenia, jeśli chcesz znaleźć znacznik czasu (chyba, że strefa czasowa jest „prawo” rodzaj) . Oto jak wykonać convert a utc time to the timestamp.
Nie ma mowy, że napisany przez Ciebie kod działa w ogóle, ponieważ nazwałeś ciąg 'time', a następnie próbowałeś użyć funkcji z pakietu' time', który nie jest już dostępny pod tą nazwą. – geoffspear