15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

>>>

2014-05-01 15:45:16

Depois de ver como o PDT funciona bem com a função strptime, poderíamos

supor que qualquer outro fuso funcionaria da mesma maneira. No entanto, não é

o caso. Infelizmente, strptime levanta uma exceção quando converte a partir do

Eastern Daylight Time, ou EDT (Hora Norte-Americana do Leste, o fuso horário

de Nova York).

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

time_tuple = strptime(arrival_nyc, time_format)

>>>

ValueError: unconverted data remains: EDT

O problema neste caso é a natureza extremamente dependente de plataforma do

módulo time. Seu comportamento real é determinado pela maneira como a

linguagem C funciona no sistema operacional instalado na máquina. Isso faz

com que o módulo time não seja confiável no Python. O módulo time é falho

quando mais de um fuso horário está envolvido. Portanto, devemos evitar o uso

do módulo time para esse fim. Caso seja absolutamente imprescindível usar

time, use-o apenas para converter entre UTC e a hora local do seu computador.

Para todos os outros tipos de conversão, use em seu lugar o módulo datetime.

Módulo datetime

A segunda opção para representar horários em Python é a classe datetime do

módulo nativo datetime. Assim como no módulo time, o datetime (entre outras

coisas) converte a hora local para UTC e vice-versa.

No exemplo de código a seguir, convertemos o horário atual em UTC e depois o

convertemos para o horário local do PC, que no meu caso é a Hora do Pacífico

(Pacific Daylight Time – PDT):

from datetime import datetime, timezone

now = datetime(2014, 8, 10, 18, 18, 30)

now_utc = now.replace(tzinfo=timezone.utc)

now_local = now_utc.astimezone()

print(now_local)

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!