MCG126 – Programação de Computadores II
Prof. Isac Mendes Lacerda
(Material original cedido gentilmente pela professora Janaína Gomide)
Data e hora
Data e Hora
• Trabalhar com Data e Hora em qualquer linguagem de programação é um tema complexo:
– problemas associados a fusos horários – calendários não gregorianos
• Vamos abordar Data e Hora de uma forma mais prática e mais simples
• Aprender as necessidades básicas de manipulação das mesmas:
– Descobrir a data corrente – Somar datas
– Calcular datas para frente ou para trás
– Verificar dias de semana para determinadas datas – Formatar datas, etc.
Data e Hora
• Python oferece suporte para manipulação de Data e Hora através de bibliotecas nativas: calendar, datetime, time
• É necessário fazer o import das bibliotecas
Biblioteca calendar
• Biblioteca calendar
calendario é uma string calendar é um módulo!
Classe calendar - Métodos
• setfirstweekday() – configura o primeiro dia da semana para começar cada semana. Observe o exemplo:
O padrão é mostrar a segunda-feira primeiro!
Classe calendar - Métodos
• setfirstweekday() – configura o primeiro dia da semana para começar cada semana. Observe o exemplo:
Definindo o domingo como o início!
Classe calendar - Métodos
• monthcalendar() – retorna uma matriz para representar o calendário do mês. Cada linha da matriz representa uma semana, os dias fora do mês são representados com 0s.
Biblioteca time - Métodos
• Biblioteca time
- time() – retorna o instante de tempo em segundos como float
Biblioteca time - Métodos
• Biblioteca time
- sleep(n) – suspende a execução do programa por n segundos.
Biblioteca datetime
• Biblioteca datetime:
– Possui inúmeras classes e propriedades para manipulação de data e hora. Principais Classes:
• datetime: manipulação de data e hora
• date: manipulação de data
• time: manipulação de hora
• timedelta: calculo de diferença entre datas, datas futuras, datas passadas, tempo futuro, tempo passado
• timezone: manipulação de fuso horário
• tzinfo: manipulação de fuso horário
– É necessário fazer o import das classes desejadas
Classe datetime - Propriedades
• Classe datetime:
– Principais propriedades da classe datetime:
• year: ano
• month: mês
• day: dia
• hour: hora
• minute: minuto
• second: segundo
• microsecond: microssegundo
Classe datetime - Métodos
• today(): retorna o dia corrente num objeto datetime.
– As propriedades (atributos) year, month, day, hour, minute, second, microsecond são inteiros
– Podem ser obtidas diretamente através do
nomeDoObjeto.propriedade, exemplo: hoje.year, hoje.second.
Classe datetime - Métodos
Classe datetime - Métodos
• datetime (year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]): converte os parâmetros fornecidos em um objeto datetime. Os parâmetros devem respeitar as regras de conversão para data (mês entre 1 e 12, etc.), sendo year, month e day obrigatórios.
Classe datetime - Métodos
• datetime (year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]): converte os parâmetros fornecidos em um objeto datetime. Os parâmetros devem respeitar as regras de conversão para data (mês entre 1 e 12, etc.), sendo year, month e day obrigatórios.
Classe datetime - Métodos
• ctime(): gera uma string no formato ctime.
>>> data.ctime()
'Wed Dec 25 12:40:00 2013‘
Classe datetime - Métodos
• isoweekday(): retorna o número correspondente ao dia da semana, no padrão ISO:
1 – Segunda, 2 – terça, 3 – quarta, ..., 7 - domingo.
>>> data.isoweekday()
3
• weekday(): retorna o número correspondente ao dia da semana:
0 – Segunda, 1 – terça, 2 – quarta, ..., 6 - domingo.
>>> data.weekday()
Classe datetime - Métodos
• date(): retorna um objeto do tipo date. Considerando somente ano, mês e dia.
Classe datetime - Métodos
• time(): retorna um objeto do tipo time. Considerando somente hora, minuto, segundo e microssegundo
Classe datetime - Métodos
• strftime(): retorna uma string formatada de acordo com os parâmetros passados. Os parâmetros são passados via código conforme as tabelas seguintes:
21 Danilo Freitas
13:30:27
Cód. Significado
% a Dia da semana abreviado
% A Dia da semana extenso
% b Nome abreviado mês
% B Nome do mês extenso
% c Data e hora conforme configuração regional
% C Número do século (o ano dividido por 100, de 00 até 99).
% d Dia do mês (01 a 31)
% D Mesmo que %m /%d /%y
% e Dia do mês (1 a 31)
% g Como %G, mas sem o século.
% G Ano de 4 dígitos correspondente ao número da semana ISO (veja % V).
% h Mesmo que %b
% H Hora usando um relógio de 24 horas (00 a 23).
% I Hora usando um relógio de 12 horas (01 a 12).
% j Dia do ano (001 a 366)
Classe datetime - Métodos
Cód. Significado
% m Mês (01 a 12)
% M Minuto
% n Caractere de nova linha
% p AM ou PM de acordo com o valor da hora
% r Hora em notação da manhã e PM
% R Hora em notação de 24 horas
% S Segundo
% t Caractere de tabulação
% T Hora atual igual a %H:%M:%S
% u Dia da semana como um número (1 a 7), segunda = 1.
Classe datetime - Métodos
Cód. Significado
% V
Número da semana ISO 8601 do ano em curso (01 a 53), onde primeira semana é a primeira semana que tem pelo menos 4 dias no ano em curso, e com segunda feira como o primeiro dia da semana
% W Número da semana do ano em curso, a partir da primeira segunda feira como o primeiro dia da primeira semana.
% w Dia da semana como um decimal, domingo = 0.
% x Representação regional da data.
% X Representação regional da hora.
% y Ano, sem o século (de 00 a 99)
% Y Ano, incluindo o século
% Z Zona ou nome ou abreviação do tempo
% z Zona ou nome ou abreviação do tempo
%% Um caractere literal%
Classe datetime - Métodos
Dia da semana. Domingo = 0
Dia da semana por extenso.
Classe timedelta - Métodos
• timedelta
(days=0, seconds=0, microseconds=0, milliseconds=0, min utes=0, hours=0, weeks=0): A classe timedelta trabalha com os parâmetros listados acima. Todos são opcionais e tem 0 (zero) como default.
• Permite trabalhar com a diferença entre datas, calcular datas a frente, datas para trás.
Classe timedelta - Métodos
Classe timedelta - Métodos
Exercícios
• Fazer um programa que leia o arquivo alunos.txt, que contém: nome, matrícula e data de nascimento (formato dd/mm/aa) os campos estão separados por um branco, e imprimir um relatório (arquivo) com o nome, matrícula, data de nascimento, idade e situação eleitoral (se o aluno tiver menos de 16 anos -> “Não votante”, entre 16 e 18 anos -> “Opcional”, acima de 18 anos -> “Votante”). O relatório (arquivo) deve ter data e hora de execução.
MCG126 – Programação de Computadores II
Prof. Isac Mendes Lacerda