1
resposta

[Projeto] Desafio Opcional - Formatação de Datas

Insira aqui a descrição dessa imagem para ajudar na acessibilidade OBS: Para realizar um raise exception/error neste caso, seria implementado baseando os dias, meses e anos em um intervalo ou teria uma maneira mais prática e eficiente?

1 resposta

Olá Guilherme, 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.

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. 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.: 2022
  • %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(2022, 12, 9, 13, 5)

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 formata(self):
        print(self.data.strftime('%d/%m/%Y %H:%M'))


data = Data(2022, 12, 9, 13, 5)
data.formata()

Resultado

09/12/2022 13:05

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!