Olá Juliano, tudo bem com você?
Meus parabéns pela implementação do código da atividade, fico feliz que tenha compartilhado-o com a comunidade do fórum Alura. Sua explicação ficou excelente, ela irá contribuir bastante para o desenvolvimento de todos os alunos e alunas que lerem sua postagem.
Gostaria de aproveitar a oportunidade e deixar uma dica de implementação. No Python temos a biblioteca datetime
que permite trabalharmos com a manipulação e validação de data e horas com uma maior facilidade, assim, podemos trabalhar com as exceções e levantamento de erros de uma forma prática.
Para implementar o uso da biblioteca datetime
na classe Data
e criarmos uma validação das datas e realizar o levantamento de erro e exceções usaremos as cláusulas try / except
. Com isso, o método inicializador irá tentar (try
) criar um objeto com a biblioteca datetime
exceto (except
) quando essa tentativa elevar erro de valor (ValueError
).
Essa implementação será feita no método inicializador (__init__
) como apresentado abaixo:
def __init__(self, ano, mes, dia, hora, minuto):
try:
self.data = datetime.datetime(ano, mes, dia, hora, minuto)
except ValueError as e:
raise ValueError(e)
No código acima, será realizada a tentativa da declaração do atributo data
, exceto quando os valores informados geram erro.
Para exibir a data com a formatação, usaremos o método strftime
da biblioteca datetime
. Como apresentado abaixo.
def formata(self):
print(self.data.strftime('%d/%m/%Y %H:%M'))
No código acima é utilizado códigos de formatação para transformar a saída no padrão Brasileiro, onde:
- %d significa dia entre 01 e 31
- %m significa número do mês
- %Y significa ano, com a versão completa, Ex.: 2023
- %H significa hora entre 00 e 23
- %M significa minutos
Caso alguma regra das apresentadas acima seja burlada, obteremos o erro de ValueError.
Por ser um recurso no formato estrangeiro, no momento da criação do objeto devemos informar os valores na seguinte ordem: ano
, mês
, dia
, hora
, minutos
. Como apresentado abaixo.
data = Data(2023, 1, 21, 7, 0)
Código completo com as mudanças necessárias
import datetime
class Data:
def __init__(self, ano, mes, dia, hora, minuto):
try:
self.data = datetime.datetime(ano, mes, dia, hora, minuto)
except ValueError as e:
raise ValueError(e)
def valida(self):
print(self.data.strftime('%d/%m/%Y %H:%M'))
data = Data(2023, 1, 21, 7, 0)
data.valida()
Resultado
21/01/2023 07:00
Para aprimorar ainda mais o seu aprendizado sobre a biblioteca datetime
, recomendo a leitura dos artigos abaixo, onde será abordado com detalhes sobre o uso e aplicações dessa biblioteca.
O segundo artigo recomendado acima está em inglês, o uso da língua inglesa é bem comum na área de tecnologia, mas não se preocupe, caso não tenha afinidade com essa linguagem, recomendo que utilize o tradutor do navegador para uma melhor compressão.
Lembre-se que pode contar sempre com o fórum Alura, seja para compartilhar o seu desenvolvimento ou para tirar suas dúvidas.
Fico à disposição.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!