Python 3 - 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 0h00 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çãotime.time() retorna a hora atual do sistema em tiques desde 0h00 de 1 de janeiro de 1970 (época).

Exemplo

#!/usr/bin/python3
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: 1455508609.34375

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 tratam o tempo como uma tupla de 9 números, conforme mostrado abaixo -

Índice Campo Valores
0 Ano de 4 dígitos 2016
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

Por exemplo -

import time

print (time.localtime());

Isso produziria o seguinte resultado -

time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, tm_hour = 9, 
   tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)

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

Índice Atributos Valores
0 tm_year 2016
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 da época em um tempo, passe o valor de ponto flutuante para uma função (por exemplo, hora local) que retorna uma tupla de tempo com todos os nove itens válidos.

#!/usr/bin/python3
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 = 2016, tm_mon = 2, tm_mday = 15, 
   tm_hour = 9, tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)

Obtendo tempo formatado

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

#!/usr/bin/python3
import time

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

Isso produziria o seguinte resultado -

Local current time : Mon Feb 15 09:34:03 2016

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/python3
import calendar

cal = calendar.month(2016, 2)
print ("Here is the calendar:")
print (cal)

Isso produziria o seguinte resultado -

Here is the calendar:
   February 2016
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

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. Descrição da funçã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 for a leste do UTC (como na Europa Ocidental, incluindo o Reino Unido). Use isto 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.

Existem dois atributos importantes disponíveis com o módulo de tempo. Eles são -

Sr. Não. Atributo e 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 mudar isso, ligue para ocalendar.setfirstweekday() função.

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

Sr. Não. Descrição da funçã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 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 -