La funzione utcnow () del modulo datetime può essere utilizzata per ottenere l'ora UTC corrente.
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
Come dice il link sopra citato da Tom: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ dice:
UTC è un fuso orario senza ora legale e ancora un fuso orario senza modifiche alla configurazione in passato.
Misura e memorizza sempre l'ora in UTC .
Se è necessario registrare dove è stato impiegato il tempo, archiviarlo separatamente.
Non memorizzare l'ora locale + le informazioni sul fuso orario!
NOTA - Se uno qualsiasi dei tuoi dati si trova in una regione che utilizza l'ora legale, usa pytze dai un'occhiata alla risposta di John Millikin.
Se si desidera ottenere l'ora UTC da una determinata stringa e si è abbastanza fortunati da trovarsi in una regione del mondo che non utilizza l'ora legale o si hanno dati che sono solo sfalsati dall'ora UTC senza che l'ora legale sia applicata:
-> utilizzando l'ora locale come base per il valore di offset:
>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
-> Oppure, da un offset noto, utilizzando datetime.timedelta ():
>>> UTC_OFFSET = 10
>>> result_utc_datetime = local_datetime - datetime.timedelta(hours=UTC_OFFSET)
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
AGGIORNARE:
Da Python 3.2 datetime.timezone è disponibile. È possibile generare un oggetto datetime sensibile al fuso orario con il comando seguente:
import datetime
timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)
Se sei pronto ad accettare conversioni di fuso orario, leggi questo:
https://medium.com/@eleroy/10-things-you-need-to-know-about-date-and-time-in-python-with-datetime-pytz-dateutil-timedelta-309bfbafb3f7