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 horários.
O que é Tick?
Os intervalos de tempo são números de ponto flutuante em unidades de segundos. Instantes particulares no tempo são expressos em segundos desde 00:00:00 hrs de 1º de janeiro de 1970 (época).
Há um horário popular módulo disponível em Python que fornece funções para trabalhar com tempos e para converter entre representações. A função hora.hora() retorna a hora atual do sistema em tiques desde 00:00:00 hrs de 1º de janeiro de 1970 (época).
Exemplo
Demonstração ao vivo#!/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 algo como segue -
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 desta forma. As datas no futuro distante também não podem ser representadas dessa maneira - o ponto de corte é em algum momento de 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, como 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 | Economia de verão | -1, 0, 1, -1 significa que a biblioteca determina o horário de verão |
A tupla acima é equivalente a struct_time estrutura. Esta estrutura tem 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 o horário de verão |
Como obter a hora atual
Para traduzir um instante de tempo de segundos desde a época valor de ponto flutuante 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.
Demonstração ao vivo
#!/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)
Como obter a hora formatada
Você pode formatar a qualquer momento conforme sua necessidade, mas o método simples para obter a hora em formato legível é asctime() −
Demonstração ao vivo
#!/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 brincar com calendários anuais e mensais. Aqui, imprimimos um calendário para um determinado mês (Janeiro de 2008) −
Demonstração ao vivo
#!/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
A hora Módulo
Há um horário popular mó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 -
Nº Sr. | Função com descrição |
---|---|
1 | hora.altzone O deslocamento do fuso horário do horário de verão local, em segundos a oeste do UTC, se um estiver definido. Isso é negativo se o fuso horário do horário de verão local estiver a leste do UTC (como na Europa Ocidental, incluindo o Reino Unido). Use apenas se a luz do dia for diferente de zero. |
2 | time.asctime([tupletime]) Aceita uma tupla de tempo e retorna uma string de 24 caracteres legível, como 'Tue Dec 11 18:07:14 2008'. |
3 | hora.relógio( ) Retorna o tempo de CPU atual como um número de segundos de ponto flutuante. Para medir os custos computacionais de diferentes abordagens, o valor de time.clock é mais útil que o de time.time(). |
4 | time.ctime([secs]) Como asctime(localtime(secs)) e sem argumentos é como asctime( ) |
5 | time.gmtime([secs]) 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([secs]) 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 horário de verão se aplica a segundos instantâneos pelas regras locais). |
7 | time.mktime(tupletime) Aceita um instante expresso como uma tupla de tempo na hora local e retorna um valor de ponto flutuante com o instante expresso em segundos desde a época. |
8 | tempo.sono(s) Suspende o thread de chamada por segundos segundos. |
9 | time.strftime(fmt[,tupletime]) Aceita um instante expresso como uma tupla de tempo na hora local e retorna uma string representando 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 | hora.hora() Retorna o instante de tempo atual, um número de ponto flutuante de segundos desde a época. |
12 | tempo.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 percorrer as funções brevemente -
Existem dois atributos importantes disponíveis com o módulo de tempo -
Nº Sr. | Atributo com Descrição |
---|---|
1 | time.timezone O atributo time.timezone é o deslocamento em segundos do fuso horário local (sem DST) do UTC (>0 nas Américas; <=0 na maior parte da Europa, Ásia e África). |
2 | time.tzname O atributo time.tzname é um par de strings dependentes de localidade, que são os nomes do fuso horário local sem e com DST, respectivamente. |
O calendário Módulo
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 segunda-feira como o primeiro dia da semana e domingo como o último. Para mudar isso, chame a função calendar.setfirstweekday().
Aqui está uma lista de funções disponíveis com o calendário módulo -
Nº Sr. | Função com descrição |
---|---|
1 | calendário.calendário(ano,w=2,l=1,c=6) Retorna uma string de várias linhas com um calendário para ano ano formatado em três colunas separadas por espaços c. 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 | calendário.primeiro dia da semana( ) Retorna a configuração atual para o dia da semana que começa a cada semana. Por padrão, quando o calendário é importado pela primeira vez, é 0, significando segunda-feira. |
3 | calendário.isleap(ano) Retorna True se ano for bissexto; caso contrário, Falso. |
4 | calendário.leapdays(y1,y2) Retorna o número total de dias bissextos nos anos dentro do intervalo (y1,y2). |
5 | calendário.mês(ano,mês,w=2,l=1) Retorna uma string de várias linhas com um calendário para mês mês do 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 | calendário.mêscalendário(ano,mês) Retorna uma lista de listas de ints. Cada sublista denota uma semana. Dias fora do mês mês do ano ano são definidos como 0; dias dentro do mês são definidos para seu dia do mês, 1 e acima. |
7 | calendário.mêsintervalo(ano,mês) Retorna dois inteiros. O primeiro é o código do dia da semana para o primeiro dia do mês mês no ano ano; o segundo é o número de dias no mês. Os códigos de dia da semana são 0 (segunda-feira) a 6 (domingo); os números do mês são de 1 a 12. |
8 | calendário.prcal(ano,w=2,l=1,c=6) Como imprimir calendar.calendar(ano,w,l,c). |
9 | calendário.prmês(ano,mês,w=2,l=1) Como imprimir calendar.mês(ano,mês,w,l). |
10 | calendar.setfirstweekday(dayday) Define o primeiro dia de cada semana para o código do dia da semana. Os códigos de dia da semana são de 0 (segunda-feira) a 6 (domingo). |
11 | calendário.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 | calendário.dia da semana(ano,mês,dia) Retorna o código do dia da semana para a data especificada. Os códigos de dia da semana são 0 (segunda-feira) a 6 (domingo); os números dos meses são de 1 (janeiro) a 12 (dezembro). |
Outros módulos e funções
Se você estiver interessado, aqui você encontrará uma lista de outros módulos e funções importantes para brincar com data e hora em Python −
-
O datahora Módulo
-
O pytz Módulo
-
O datautil Módulo
python