15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

>>>

2014-08-10 11:18:30-07:00

O módulo datetime pode facilmente converter um horário local para o UTC em

formato UNIX.

time_str = '2014-08-10 11:18:30'

now = datetime.strptime(time_str, time_format)

time_tuple = now.timetuple()

utc_now = mktime(time_tuple)

print(utc_now)

>>>

1407694710.0

Diferente do módulo time, o módulo datetime possui recursos para, de forma

confiável, converter de um fuso horário para outro. Contudo, o datetime só

fornece o maquinário necessário para as operações de fuso horário empregando a

classe tzinfo e métodos relacionados. Não há, no módulo, informações sobre

outros fusos que não sejam o próprio UTC.

A comunidade do Python resolveu o problema com um módulo não nativo, pytz,

disponível para download no Python Package Index

(https://pypi.python.org/pypi/pytz/). O pytz contém um banco de dados completo

sobre quaisquer fusos horários de que se necessite.

Para usar o pytz de forma eficaz, devemos sempre converter primeiro o horário

local para UTC. Depois, faça todas as operações que precisar com o datetime

sobre os valores em UTC (como por exemplo deslocamento). Por fim, converta

de UTC para o fuso horário desejado.

Por exemplo, o código a seguir converte o horário de chegada de um voo a NYC

para UTC com o datetime. Embora algumas dessas chamadas pareçam

redundantes, todas são necessárias quando usamos pytz.

arrival_nyc = '2014-05-01 23:33:24'

nyc_dt_naive = datetime.strptime(arrival_nyc, time_format)

eastern = pytz.timezone('US/Eastern')

nyc_dt = eastern.localize(nyc_dt_naive)

utc_dt = pytz.utc.normalize(nyc_dt.astimezone(pytz.utc))

print(utc_dt)

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!