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.

Item 45: Use datetime em vez de time para relógios

locais

O Tempo Coordenado Universal (Coordinated Universal Time, em inglês, mais

conhecido pela sua sigla UTC) é a representação-padrão da passagem de tempo,

completamente independente de fusos horários. O UTC é ótimo para os

computadores: o tempo, para as máquinas, é representado como o número de

segundos que se passaram desde um momento no tempo chamado de UNIX

Epoch 1 . No entanto, o UTC não é lá muito amigável para nós, humanos. Nossa

referência de tempo é sempre relativa ao local em que nos encontramos. As

pessoas dizem “meio-dia” ou “oito da noite” em vez de “UTC 15:00 menos 7

horas”. Se um programa lida com tempo, provavelmente o programador teve que

criar rotinas de conversão entre o tempo UTC e os relógios locais para que os

humanos possam entender.

O Python oferece duas maneiras de efetuar conversões de fuso horário. A

maneira antiga, usando o módulo nativo time, é desastrosamente propensa a

erros. A nova maneira, com o módulo datetime, também nativo, funciona muito

bem com a ajuda de um pacote desenvolvido pela comunidade chamado pytz.

Precisamos conhecer com certa profundidade o funcionamento de ambos os

módulos, time e datetime, para entender completamente o porquê de datetime ser

melhor e de evitar time a todo custo.

Módulo time

A função localtime do módulo nativo time permite converter um tempo em

formato UNIX (segundos decorridos desde a UNIX Epoch com o relógio

ajustado para UTC) para um horário local, de acordo com o fuso horário

configurado no sistema do computador local. No meu caso, o fuso é chamado de

Pacific Daylight Time (Hora Norte-Americana do Pacífico, Horário de Verão).

from time import localtime, strftime

now = 1407694710

local_tuple = localtime(now)

time_format = '%Y-%m-%d %H:%M:%S'

time_str = strftime(time_format, local_tuple)

print(time_str)

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!