Skip to content

Instantly share code, notes, and snippets.

@yugi386
Created December 28, 2011 16:13
Show Gist options
  • Save yugi386/1528522 to your computer and use it in GitHub Desktop.
Save yugi386/1528522 to your computer and use it in GitHub Desktop.
MÉTODO PARA VALIDAR UMA DATA
#############################################
# 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