La función utcnow () del módulo datetime se puede usar para obtener la hora UTC actual.
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
Como dice el enlace mencionado anteriormente por Tom: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ dice:
UTC es una zona horaria sin horario de verano y sigue siendo una zona horaria sin cambios de configuración en el pasado.
Siempre mida y almacene el tiempo en UTC .
Si necesita registrar dónde se tomó el tiempo, guárdelo por separado.
¡No almacene la información de hora local + zona horaria!
NOTA - Si alguno de sus datos se encuentra en una región que usa DST, use pytz
y eche un vistazo a la respuesta de John Millikin.
Si desea obtener el tiempo UTC de una cadena determinada y tiene la suerte de estar en una región del mundo que no utiliza DST o tiene datos que solo se compensan desde UTC sin DST aplicado:
-> utilizando la hora local como base para el valor de compensación:
>>> # 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'
-> O, desde un desplazamiento conocido, usando 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'
ACTUALIZAR:
Desde python 3.2 datetime.timezone
está disponible. Puede generar un objeto datetime con reconocimiento de zona horaria con el siguiente comando:
import datetime
timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)
Si estás listo para realizar conversiones de zona horaria, lee esto:
https://medium.com/@eleroy/10-things-you-need-to-know-about-date-and-time-in-python-with-datetime-pytz-dateutil-timedelta-309bfbafb3f7