MCG126 Programação de Computadores II Prof. Isac Mendes Lacerda (Material original cedido gentilmente pela professora Janaína Gomide) 1
Data e hora 2
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. 3
Data e Hora Python oferece suporte para manipulação de Data e Hora através debibliotecas nativas: calendar, datetime, time É necessário fazer o import das bibliotecas 4
Biblioteca calendar Biblioteca calendar calendar é um módulo! calendario é uma string 5
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! 6
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! 7
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. 8
Biblioteca time - Métodos Biblioteca time - time() retorna o instante de tempo em segundos como float 9
Biblioteca time - Métodos Biblioteca time - sleep(n) suspende a execução do programa por n segundos. 10
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 11
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 12
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. 13
Classe datetime - Métodos 14
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. 15
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. 16
Classe datetime - Métodos ctime(): gera uma string no formato ctime. >>> data.ctime() 'Wed Dec 25 12:40:00 2013 17
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() 2 18
Classe datetime - Métodos date(): retorna um objeto do tipo date. Considerando somente ano, mês e dia. 19
Classe datetime - Métodos time(): retorna um objeto do tipo time. Considerando somente hora, minuto, segundo e microssegundo 20
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: 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). Danilo Freitas % j Dia do ano (001 a 366) 13:30:27 21
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. % U Número da semana do ano em curso, começando com o primeiro domingo como o primeiro dia da primeira semana. 22
Classe datetime - Métodos Cód. % V % W Significado 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 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% 23
Classe datetime - Métodos Dia da semana. Domingo = 0 Dia da semana por extenso. %I - relógio em 12 %M - minuto %S - Segundo %p - AM ou PM 24
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. 25
Classe timedelta - Métodos 26
Classe timedelta - Métodos 27
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. 32
MCG126 Programação de Computadores II Prof. Isac Mendes Lacerda 34