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