Last active
August 29, 2015 14:06
-
-
Save viniciusban/846fac65719382628aa5 to your computer and use it in GitHub Desktop.
Valida data no formato dd/mm/aaaa
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
/* | |
* Exemplos de como usar e resultados: | |
* - data_eh_valida("25/01/2014") => true | |
* - data_eh_valida("25/01/14") => false - ano precisa ter 4 digitos | |
* - data_eh_valida("29/02/2015") => false - 29/02 em ano nao bisexto | |
* - data_eh_valida("32/07/2014") => false - dia invalido | |
* - data_eh_valida("25/13/2014") => false - mes invalido | |
*/ | |
var data_eh_valida = function (data_str) { | |
// Valida se data_str no formato dd/mm/aaaa tem a | |
// combinacao de dia, mes e ano (com 4 algarimos) | |
// validos. | |
var partes = data_str.split('/'); | |
var dia = parseInt(partes[0], 10), | |
mes = parseInt(partes[1], 10) -1, | |
ano = parseInt(partes[2], 10); | |
if (isNaN(dia) || isNaN(mes) || isNaN(ano)) { | |
return false; | |
} else { | |
var d = new Date(ano, mes, dia); | |
if (d.getDate() !== dia || | |
d.getMonth() !== mes || | |
d.getFullYear() !== ano ) { | |
return false; | |
} | |
} | |
return true; | |
}; |
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
/* | |
* Exemplos de como usar e resultados: | |
* - data_eh_menor_que("25/01/2014", "01/01/1950") => false | |
* - data_eh_menor_que("25/01/1970", "31/10/2001") => true | |
* - data_eh_menor_que("16/06/1900", "hoje") => true | |
* | |
* - data_eh_maior_que("25/01/2014", "01/01/1950") => true | |
* - data_eh_maior_que("25/01/1970", "31/10/2001") => false | |
* - data_eh_maior_que("28/03/1903", "hoje") => false | |
* | |
* - data_eh_igual_a("25/01/2014", "25/01/2014") => true | |
* - data_eh_igual_a("25/01/1970", "31/10/2001") => false | |
* - data_eh_igual_a("20/10/1950", "hoje") => false | |
*/ | |
var data_eh_menor_que = function (data_base, data_limite) { | |
return data_eh_menor_maior_igual_que(data_base, data_limite, "menor"); | |
}; | |
var data_eh_maior_que = function (data_base, data_limite) { | |
return data_eh_menor_maior_igual_que(data_base, data_limite, "maior"); | |
}; | |
var data_eh_igual_a = function (data_base, data_limite) { | |
return data_eh_menor_maior_igual_que(data_base, data_limite, "igual"); | |
}; | |
var data_eh_menor_maior_igual_que = function (data_base, data_limite, operacao) { | |
// Valida se data_base eh menor/maior/igual que data_limite, conforme operacao. | |
// | |
// Obs.: | |
// 1) data_base e data_limite no formato dd/mm/aaaa. | |
// 2) data_limite pode ser === "hoje". | |
// 3) operacao pode ser "menor", "maior" ou "igual". | |
// trata "hoje" como data especial. | |
if (data_limite === "hoje") { | |
var d = new Date(); | |
var mes_d = d.getMonth() +1; | |
data_limite = d.getDate() +'/'+ mes_d +'/'+ d.getFullYear(); | |
} | |
var datas_str = [data_base, data_limite]; | |
var datas = []; | |
for (var i = 0, len = datas_str.length; i < len; i++) { | |
var partes = datas_str[i].split('/'); | |
var dia = parseInt(partes[0], 10), | |
mes = parseInt(partes[1], 10) -1, | |
ano = parseInt(partes[2], 10); | |
if (isNaN(dia) || isNaN(mes) || isNaN(ano)) { | |
return false; | |
} else { | |
datas.push(new Date(ano, mes, dia)); | |
} | |
} | |
if (operacao === "menor") { | |
return (datas[0] < datas[1]); | |
} else if (operacao === "maior") { | |
return (datas[0] > datas[1]); | |
} else if (operacao === "igual") { | |
return (datas[0] === datas[1]); | |
} else { | |
return false; | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment