Olá João, tudo bem com você?
Peço desculpas pela demora em lhe responder.
No Python temos a biblioteca datetime
que permite trabalharmos com a manipulação e validação de data e horas com uma maior facilidade. Por ser um recurso no formato estrangeiro, devemos informar os valores na seguinte ordem: ano
, mês
, dia
, hora
, minutos
:
Modelo1
import datetime
data = datetime.datetime(2022, 12, 1, 13, 11)
print(data.strftime('%d/%m/%Y %H:%M'))
Resultado
01/12/2022 13:11
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
, como mostro abaixo:
import datetime
data = datetime.datetime(2022, 12, 40, 13, 11)
print(data.strftime('%d/%m/%Y %H:%M'))
Resultado
ValueError: day is out of range for month
Ou seja, o dia está fora do range permitido.
Modelo 2
Uma forma alternativa utilizando orientação a objetos, seria a demonstrada abaixo, onde utilizamos os setters para validar determinada regra:
class DataHora:
def __init__(self, dia, mes, ano, hora, minuto):
self.dia = dia
self.mes = mes
self.ano = ano
self.hora = hora
self.minuto = minuto
def tempo(self):
return print(f'Hoje é dia: {self.dia:02d}/ {self.mes:02d}/ {self.ano} - {self.hora:02d}:{self.minuto:02d}')
@property
def dia(self):
return self.__dia
@property
def mes(self):
return self.__mes
@property
def ano(self):
return self.__ano
@property
def hora(self):
return self.__hora
@property
def minuto(self):
return self.__minuto
@dia.setter
def dia(self, novo_dia):
self.__dia = novo_dia if 0 < novo_dia < 31 else exec("raise ValueError('Dia inválido')")
@mes.setter
def mes(self, novo_mes):
self.__mes = novo_mes if 0 < novo_mes <= 12 else exec("raise ValueError('Mês inválido')")
@ano.setter
def ano(self, novo_ano):
self.__ano = novo_ano
@hora.setter
def hora(self, nova_hora):
self.__hora = nova_hora if 0 <= nova_hora <= 24 else exec("raise ValueError('Hora inválida')")
@minuto.setter
def minuto(self, novo_minuto):
self.__minuto = novo_minuto if 0 <= novo_minuto <= 59 else exec("raise ValueError('Minuto inválido')")
data = DataHora(1, 12, 2022, 22, 2)
data.tempo()
Resultado
Hoje é dia: 01/ 12/ 2022 - 22:02
Para saber um pouco mais sobre a biblioteca datetime
, recomendo a leitura dos seguintes artigos:
O segundo artigo está em inglês, caso tenha dificuldade com o idioma, recomendo o uso do tradutor do navegador.
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!