Created
December 28, 2011 16:13
-
-
Save yugi386/1528522 to your computer and use it in GitHub Desktop.
MÉTODO PARA VALIDAR UMA DATA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################# | |
# FUNÇÃO PARA VALIDAÇÃO DE DATA | |
# PROGRAMADOR: YUGI | |
# DATA: 28/12/2011 | |
############################################ | |
def valdata(data) | |
ret = FALSE | |
mapa = "0123456789/" | |
tam = data.length | |
if tam != 10 | |
puts "O formato da data está inválido - Deve ser Dia/Mes/Ano - Ex: 01/05/2011" | |
return ret | |
end | |
if data[2,1] != "/" || data[5,1] != "/" | |
puts "O formato da data está inválido - Deve ser Dia/Mes/Ano - Ex: 01/05/2011" | |
return ret | |
end | |
# Verificando se existem somente números: | |
lx = tam - 1 | |
erro = 1 | |
for cont in (0..lx) | |
for ct in (0..9) | |
if mapa[ct,1] == data[cont,1] | |
erro = 0 | |
break | |
end | |
end | |
end | |
if erro != 0 | |
puts "A data possui caracteres inválidos" | |
return ret | |
end | |
# AGORA VERIFICAMOS SE A DATA É VÁLIDA: | |
dia = data[0,2].to_i | |
mes = data[3,2].to_i | |
ano = data[6,4].to_i | |
if mes < 1 || mes > 12 | |
puts "O Mês é inválido" | |
return ret | |
end | |
if dia < 1 || dia > 31 | |
puts "O Dia é Inválido" | |
return ret | |
end | |
if mes == 4 || mes == 6 || mes == 9 || mes == 11 | |
if dia > 30 | |
puts "O Dia é Inválido" | |
return ret | |
end | |
end | |
if ano % 4 == 0 && ano % 100 != 0 || ano % 400 == 0 | |
limite = 29 | |
else | |
limite = 28 | |
end | |
if mes == 2 | |
if dia > limite | |
puts "O Dia é Inválido" | |
return ret | |
end | |
end | |
puts data | |
return TRUE | |
end | |
# -------------------------------------------------------- | |
puts valdata("29/02/1980") | |
puts valdata("29/02/1981") | |
puts valdata("29/02/1982") | |
puts valdata("29/02/1983") | |
puts valdata("29/02/1984") | |
puts valdata("31/06/1984") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment