Skip to content

Instantly share code, notes, and snippets.

@viniciusban
Last active August 29, 2015 14:06
Show Gist options
  • Save viniciusban/846fac65719382628aa5 to your computer and use it in GitHub Desktop.
Save viniciusban/846fac65719382628aa5 to your computer and use it in GitHub Desktop.
Valida data no formato dd/mm/aaaa
/*
* 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;
};
/*
* 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