Sep 192007
<script language="javascript"> /* Autor.......: Kenneth R. B. Carletto Contato.....: MSN(keno_brow@msn.com) E-Mail(chorao.info@gmail.com) Data........: 20/08/07 Finalidade..: Função que retorna qual das duas datas (passadas como parametro) é maior, baseada no objeto Date e sua funcao getTime(); */ // gE('idElemento'): Simplesmente retorna uma referencia ao objeto 'idElemento' function gE(idElemento){ return document.getElementById(idElemento); } function dataMaior(dt1,dt2){ // dt1 e dt2: Devem ser tipo String, para evitar confusao de tipos if(typeof dt1 != "string" || typeof dt2 != "string"){ alert("As datas devem ser passadas como strings"); return false; } // dt1 e dt2: Alem de strings, dt1 e dt2 devem obedecer aos formatos de data do Brasil (dd/mm/aa ou dd/mm/aaaa) padrao = /d{2}/d{2}/(?:d{2}|d{4})/; if(!padrao.test(dt1) || !padrao.test(dt2)){ alert("Formato de data invalido.nUtilize dd/mm/aa ou dd/mm/aaaa"); return false; } // Instanciamos as datas, para poder usar getTime(); data1 = new Date(dt1); data2 = new Date(dt2); if(!data1 || !data2){ alert("Erro ao criar objetos"); return false; } // milliSegundos1: irá conter a quantidade de segundos corridos desde 1/1/1970 0h ate dt1 milliSegundos1 = data1.getTime(); // milliSegundos2: irá conter a quantidade de segundos corridos desde 1/1/1970 0h ate dt2 milliSegundos2 = data2.getTime(); // Comparando millisegundos para retornar a conclusão de quem é maior que quem... if(milliSegundos1 == milliSegundos2){ alert("As datas são iguais"); return true; } else if(milliSegundos1 > milliSegundos2){ alert("Data 1 maior que data 2"); return true; } else if(milliSegundos1 < milliSegundos2){ alert("Data 2 maior que data 1"); return true; } else return false; } </script> <input name="tdt1" value="10/01/07" type="text" /> <input name="tdt2" value="10/02/07" type="text" /> <input value="Maior" onclick="dataMaior(gE('tdt1').value,gE('tdt2').value)" type="button" /> |
Posts relacionados:
Muito legal! Parabéns, você se garante em javascript!
Obrigado.
Mas não foi eu quem fiz… peguei em algum lugar e não lembro onde…
isso não funciona se o mes da data fim for menor q o da inicio
@paladino: Se quiser corrigir, publico aqui no blog…
ele tem problema com horário de verão.. tem que validar elemento por elemento da data
Salvou! vlw!
Legal esse código, mas me explica uma coisa: por que ele fala que 30/05/2010 é maior do que 20/06/2010 ???