A função utcnow () do módulo datetime pode ser usada para obter a hora UTC atual.
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
Como o link mencionado acima por Tom: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ diz:
UTC é um fuso horário sem horário de verão e ainda um fuso horário sem alterações de configuração no passado.
Sempre meça e armazene o tempo no UTC .
Se você precisar registrar onde o tempo foi levado, guarde-o separadamente.
Não armazene a hora local + informações de fuso horário!
NOTA - Se algum dos seus dados estiver em uma região que usa horário de verão, use pytz
e dê uma olhada na resposta de John Millikin.
Se você deseja obter o horário UTC de uma determinada sequência e tiver a sorte de estar em uma região do mundo que não usa o horário de verão, ou se você tiver dados que são apenas deslocados do UTC sem o horário de verão aplicado:
-> usando a hora local como base para o valor de compensação:
>>> # 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'
-> Ou, de um deslocamento conhecido, 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'
ATUALIZAR:
Desde python 3.2 datetime.timezone
está disponível. Você pode gerar um objeto datetime com reconhecimento de fuso horário com o comando abaixo:
import datetime
timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)
Se você está pronto para assumir conversões de fuso horário, leia o seguinte:
https://medium.com/@eleroy/10-things-you-need-to-know-about-date-and-time-in-python-with-datetime-pytz-dateutil-timedelta-309bfbafb3f7