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 pytz
e 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