Python - data e hora

Um programa Python pode lidar com data e hora de várias maneiras. A conversão entre formatos de data é uma tarefa comum para computadores. Os módulos de tempo e calendário do Python ajudam a rastrear datas e horas.

O que é Tick?

Os intervalos de tempo são números de ponto flutuante em unidades de segundos. Instantes específicos no tempo são expressos em segundos desde 00:00:00 horas de 1º de janeiro de 1970 (época).

Há um popular timemódulo disponível em Python que fornece funções para trabalhar com tempos e para converter entre representações. A função time.time () retorna a hora atual do sistema em tiques desde 00:00:00 horas de 1º de janeiro de 1970 (época).

Exemplo

#!/usr/bin/python
import time;  # This is required to include time module.

ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks

Isso produziria um resultado como o seguinte -

Number of ticks since 12:00am, January 1, 1970: 7186862.73399

A aritmética de datas é fácil de fazer com carrapatos. No entanto, datas anteriores à época não podem ser representadas neste formulário. Datas em um futuro distante também não podem ser representadas dessa forma - o ponto de corte é em algum momento em 2038 para UNIX e Windows.

O que é TimeTuple?

Muitas das funções de tempo do Python lidam com o tempo como uma tupla de 9 números, conforme mostrado abaixo -

Índice Campo Valores
0 Ano de 4 dígitos 2008
1 Mês 1 a 12
2 Dia 1 a 31
3 Hora 0 a 23
4 Minuto 0 a 59
5 Segundo 0 a 61 (60 ou 61 são segundos bissextos)
6 Dia da semana 0 a 6 (0 é segunda-feira)
7 Dia do ano 1 a 366 (dia juliano)
8 Horário de verão -1, 0, 1, -1 significa que a biblioteca determina DST

A tupla acima é equivalente a struct_timeestrutura. Esta estrutura possui os seguintes atributos -

Índice Atributos Valores
0 tm_year 2008
1 tm_mon 1 a 12
2 tm_mday 1 a 31
3 tm_hour 0 a 23
4 tm_min 0 a 59
5 tm_sec 0 a 61 (60 ou 61 são segundos bissextos)
6 tm_wday 0 a 6 (0 é segunda-feira)
7 tm_yday 1 a 366 (dia juliano)
8 tm_isdst -1, 0, 1, -1 significa que a biblioteca determina DST

Obtendo a hora atual

Para traduzir um instante de tempo de segundos desde o valor de ponto flutuante de época em uma tupla de tempo, passe o valor de ponto flutuante para uma função (por exemplo, localtime) que retorna uma tupla de tempo com todos os nove itens válidos.

#!/usr/bin/python
import time;

localtime = time.localtime(time.time())
print "Local current time :", localtime

Isso produziria o seguinte resultado, que poderia ser formatado em qualquer outra forma apresentável -

Local current time : time.struct_time(tm_year=2013, tm_mon=7, 
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

Obtendo tempo formatado

Você pode formatar a qualquer hora conforme sua necessidade, mas o método simples para obter a hora em um formato legível é asctime () -

#!/usr/bin/python
import time;

localtime = time.asctime( time.localtime(time.time()) )
print "Local current time :", localtime

Isso produziria o seguinte resultado -

Local current time : Tue Jan 13 10:17:09 2009

Obtendo calendário por um mês

O módulo de calendário oferece uma ampla variedade de métodos para jogar com calendários anuais e mensais. Aqui, imprimimos um calendário para um determinado mês (janeiro de 2008) -

#!/usr/bin/python
import calendar

cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal

Isso produziria o seguinte resultado -

Here is the calendar:
   January 2008
Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

O Módulo de Tempo

Há um popular timemódulo disponível em Python que fornece funções para trabalhar com tempos e para converter entre representações. Aqui está a lista de todos os métodos disponíveis -

Sr. Não. Função com Descrição
1 time.altzone

O deslocamento do fuso horário DST local, em segundos a oeste do UTC, se houver um definido. Isso é negativo se o fuso horário local do DST estiver a leste do UTC (como na Europa Ocidental, incluindo o Reino Unido). Use somente se a luz do dia for diferente de zero.

2 time.asctime ([tupletime])

Aceita uma tupla de tempo e retorna uma string legível de 24 caracteres, como 'Tue Dez 11 18:07:14 2008'.

3 Rélogio de ponto( )

Retorna o tempo atual da CPU como um número de segundos de ponto flutuante. Para medir os custos computacionais de diferentes abordagens, o valor de time.clock é mais útil do que time.time ().

4 time.ctime ([segs])

Como asctime (localtime (secs)) e sem argumentos é como asctime ()

5 time.gmtime ([segs])

Aceita um instante expresso em segundos desde a época e retorna uma tupla de tempo t com a hora UTC. Nota: t.tm_isdst é sempre 0

6 time.localtime ([segs])

Aceita um instante expresso em segundos desde a época e retorna uma tupla de tempo t com a hora local (t.tm_isdst é 0 ou 1, dependendo se o DST se aplica a segundos instantâneos pelas regras locais).

7 time.mktime (tupletime)

Aceita um instante expresso como uma tupla de tempo no horário local e retorna um valor de ponto flutuante com o instante expresso em segundos desde a época.

8 tempo.sono (segundos)

Suspende o thread de chamada por segundos e segundos.

9 time.strftime (fmt [, tupletime])

Aceita um instante expresso como uma tupla de tempo no horário local e retorna uma string que representa o instante, conforme especificado pela string fmt.

10 time.strptime (str, fmt = '% a% b% d% H:% M:% S% Y')

Analisa str de acordo com a string de formato fmt e retorna o instante no formato de tupla de tempo.

11 time.time ()

Retorna o instante de tempo atual, um número de segundos de ponto flutuante desde a época.

12 time.tzset ()

Redefine as regras de conversão de tempo usadas pelas rotinas da biblioteca. A variável de ambiente TZ especifica como isso é feito.

Vamos examinar as funções brevemente -

Existem dois atributos importantes disponíveis com o módulo de tempo -

Sr. Não. Atributo com Descrição
1

time.timezone

O atributo time.timezone é a diferença em segundos do fuso horário local (sem DST) do UTC (> 0 nas Américas; <= 0 na maior parte da Europa, Ásia, África).

2

time.tzname

O atributo time.tzname é um par de strings dependentes da localidade, que são os nomes do fuso horário local sem e com DST, respectivamente.

O Módulo Calendário

O módulo de calendário fornece funções relacionadas ao calendário, incluindo funções para imprimir um calendário de texto para um determinado mês ou ano.

Por padrão, o calendário considera a segunda-feira como o primeiro dia da semana e o domingo como o último. Para alterar isso, chame a função calendar.setfirstweekday ().

Aqui está uma lista de funções disponíveis com o módulo de calendário -

Sr. Não. Função com Descrição
1

calendar.calendar(year,w=2,l=1,c=6)

Retorna uma string multilinha com um calendário para ano ano formatado em três colunas separadas por c espaços. w é a largura em caracteres de cada data; cada linha tem comprimento 21 * w + 18 + 2 * c. l é o número de linhas para cada semana.

2

calendar.firstweekday( )

Retorna a configuração atual para o dia da semana que começa cada semana. Por padrão, quando o calendário é importado pela primeira vez, é 0, significando segunda-feira.

3

calendar.isleap(year)

Retorna True se o ano for um ano bissexto; caso contrário, False.

4

calendar.leapdays(y1,y2)

Retorna o número total de dias bissextos nos anos dentro do intervalo (y1, y2).

5

calendar.month(year,month,w=2,l=1)

Retorna uma string multilinha com um calendário para mês, mês, ano, ano, uma linha por semana mais duas linhas de cabeçalho. w é a largura em caracteres de cada data; cada linha tem comprimento 7 * w + 6. l é o número de linhas para cada semana.

6

calendar.monthcalendar(year,month)

Retorna uma lista de listas de ints. Cada sublista denota uma semana. Os dias fora do mês do ano do ano são definidos como 0; os dias do mês são definidos como o dia do mês, 1 e acima.

7

calendar.monthrange(year,month)

Retorna dois inteiros. O primeiro é o código do dia da semana para o primeiro dia do mês, mês do ano, ano; o segundo é o número de dias do mês. Os códigos dos dias da semana são 0 (segunda-feira) a 6 (domingo); os números dos meses são de 1 a 12.

8

calendar.prcal(year,w=2,l=1,c=6)

Como imprimir calendar.calendar (ano, w, l, c).

9

calendar.prmonth(year,month,w=2,l=1)

Como imprimir calendar.month (year, month, w, l).

10

calendar.setfirstweekday(weekday)

Define o primeiro dia de cada semana para o código de dia da semana. Os códigos dos dias da semana são de 0 (segunda-feira) a 6 (domingo).

11

calendar.timegm(tupletime)

O inverso de time.gmtime: aceita um instante de tempo na forma de tupla de tempo e retorna o mesmo instante como um número de ponto flutuante de segundos desde a época.

12

calendar.weekday(year,month,day)

Retorna o código do dia da semana para a data fornecida. Os códigos dos dias da semana são 0 (segunda-feira) a 6 (domingo); os números dos meses vão de 1 (janeiro) a 12 (dezembro).

Outros Módulos e Funções

Se você estiver interessado, então aqui você encontrará uma lista de outros módulos e funções importantes para brincar com data e hora em Python -

  • O Módulo datetime

  • O Módulo pytz

  • O Módulo dateutil