Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

zeronarfa

Comparar duas datas

Recommended Posts

Olá, beleza?

Estou com o seguinte problema, preciso comparar duas datas através do javascript e teria que funcionar assim: Após fazer a verificação das datas ao clicar no campo sequinte, se encontra-se alguma irregularidade apareceria um alert, eu vi um exemplo , mas não soube adapta-lo ao meu código peço a vocês q me ajudem, desde já agradeço.

 

O exemplo que eu achei foi esse:

 

<script language="JavaScript1.1" type="text/javascript" defer="defer">// Função que monta a data no formato correto para compará-lafunction montaData( p_data ) {   var diasMeses = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);   var v_exp = /(0?[1-9]|[12][0-9]|3[01])[\-\/](1[0-2]|0?[1-9])[\-\/]((19|20)?\d{2})$/;   if ( v_exp.test( p_data ) ) {	  var v_data = v_exp.exec( p_data );	  var v_dia = v_data[ 1 ];	  var v_mes = v_data[ 2 ];	  var v_ano = ( v_data[ 4 ] ) ? v_data[ 3 ] : '19' + v_data[ 3 ];	  diasMeses[2] = (  ( v_ano % 400 == 0 ) || (( v_ano % 4 == 0 ) && ( v_ano % 100 != 0 ))  ) ? 29 : 28; :wacko: 	  if ( v_dia <= diasMeses[ v_mes ] )		 return [ v_dia, v_mes, v_ano ];   }   return null;}  // Função que faz a comparação mesmofunction comparaData( p_dtPrim, p_dtSeg, p_oper ) {   var v_prim  = montaData( p_dtPrim );   var v_seg   = montaData( p_dtSeg );   p_oper = ( p_oper ) ? p_oper : '<';     if ( !v_prim || !v_seg ) return false;     var v_data1 = v_prim[ 2 ] + v_prim[ 1 ] + v_prim[ 0 ];   var v_data2 = v_seg[ 2 ] + v_seg[ 1 ] + v_seg[ 0 ];   var v_result = eval(v_data1 + p_oper + v_data2);   return v_result;}</script>

Eu tentei modificar assim:

 

<script language="JavaScript1.1" type="text/javascript" defer="defer">// Função que monta a data no formato correto para compará-lafunction montaData( p_data ) {   var diasMeses = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);   var v_exp = /(0?[1-9]|[12][0-9]|3[01])[\-\/](1[0-2]|0?[1-9])[\-\/]((19|20)?\d{2})$/;   if ( v_exp.test( p_data ) ) {	  var v_data = v_exp.exec( p_data );	  var v_dia = v_data[ 1 ];	  var v_mes = v_data[ 2 ];	  var v_ano = ( v_data[ 4 ] ) ? v_data[ 3 ] : '19' + v_data[ 3 ];	  diasMeses[2] = (  ( v_ano % 400 == 0 ) || (( v_ano % 4 == 0 ) && ( v_ano % 100 != 0 ))  ) ? 29 : 28;	  if ( v_dia <= diasMeses[ v_mes ] )		 return [ v_dia, v_mes, v_ano ];   }   return null;}  // Função que faz a comparação mesmofunction comparaData( textdata_entrada, textdata_saida, p_oper ) {   var v_prim  = montaData( textdata_entrada );   var v_seg   = montaData( textdata_saida );   p_oper = ( p_oper ) ? p_oper : '<';     if ( !v_prim || !v_seg ) return false;     var v_data1 = v_prim[ 2 ] + v_prim[ 1 ] + v_prim[ 0 ];   var v_data2 = v_seg[ 2 ] + v_seg[ 1 ] + v_seg[ 0 ];   var v_result = eval(v_data1 + p_oper + v_data2);   return v_result;}if (v_data1 <= v_data2)			{				alert('Datas estão certas!');				return true;			}	else			{				alert('ATENÇÃO: Data de saída é menor que data de entrada');				document.all.textdata_entrada.final.focus();				document.all.textdata_saida.final.select();				return false;			}</script>
:wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

if (comparaData( data1, data2, '<=' ) alert('Datas estão certas!');else alert('ATENÇÃO: Data de saída é menor que data de entrada');

Obs.: Use a função original.

 

Abraços, T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

if (comparaData( data1, data2, '<=' ) alert('Datas estão certas!');else alert('ATENÇÃO: Data de saída é menor que data de entrada');
Obs.: Use a função original.Abraços, T+
Putz, desculpe a ignorância mas onde coloco os if com os alert q você me passou?Preciso colocar os algum código nos campos da data? eu fiz assim: dá uma corrigida ae se for possível... valeu!
<script language="JavaScript1.1" type="text/javascript" defer="defer">// Função que monta a data no formato correto para compará-lafunction montaData( p_data ) {   var diasMeses = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);   var v_exp = /(0?[1-9]|[12][0-9]|3[01])[\-\/](1[0-2]|0?[1-9])[\-\/]((19|20)?\d{2})$/;   if ( v_exp.test( p_data ) ) {	  var v_data = v_exp.exec( p_data );	  var v_dia = v_data[ 1 ];	  var v_mes = v_data[ 2 ];	  var v_ano = ( v_data[ 4 ] ) ? v_data[ 3 ] : '19' + v_data[ 3 ];	  diasMeses[2] = (  ( v_ano % 400 == 0 ) || (( v_ano % 4 == 0 ) && ( v_ano % 100 != 0 ))  ) ? 29 : 28;:wacko:	  if ( v_dia <= diasMeses[ v_mes ] )		 return [ v_dia, v_mes, v_ano ];   }   return null;}  // Função que faz a comparação mesmofunction comparaData( textdata_entrada, textdata_saida, p_oper ) {   var v_prim  = montaData( textdata_entrada );   var v_seg   = montaData( textdata_saida );   p_oper = ( p_oper ) ? p_oper : '<';     if ( !v_prim || !v_seg ) return false;     var v_data1 = v_prim[ 2 ] + v_prim[ 1 ] + v_prim[ 0 ];   var v_data2 = v_seg[ 2 ] + v_seg[ 1 ] + v_seg[ 0 ];   var v_result = eval(v_data1 + p_oper + v_data2);   return v_result;}{if (comparaData( v_data1, v_data2, '<=' )	alert('Datas estão certas!');	return true;		else alert('ATENÇÃO: Data de saída é menor que data de entrada');	return false;}</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use isso entre as tags <head> e </head>

<script>function verifica () {  if (comparaData( v_data1, v_data2, '<=' )) alert('Datas estão certas!');  else {	alert('ATENÇÃO: Data de saída é menor que data de entrada');	document.MeuForm.MeuCampo.focus();  }}// Função que monta a data no formato correto para compará-lafunction montaData( p_data ) {   var diasMeses = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);   var v_exp = /(0?[1-9]|[12][0-9]|3[01])[\-\/](1[0-2]|0?[1-9])[\-\/]((19|20)?\d{2})$/;   if ( v_exp.test( p_data ) ) {	  var v_data = v_exp.exec( p_data );	  var v_dia = v_data[ 1 ];	  var v_mes = v_data[ 2 ];	  var v_ano = ( v_data[ 4 ] ) ? v_data[ 3 ] : '19' + v_data[ 3 ];	  diasMeses[2] = (  ( v_ano % 400 == 0 ) || (( v_ano % 4 == 0 ) && ( v_ano % 100 != 0 ))  ) ? 29 : 28;:wacko: 	  if ( v_dia <= diasMeses[ v_mes ] )		 return [ v_dia, v_mes, v_ano ];   }   return null;}  // Função que faz a comparação mesmofunction comparaData( p_dtPrim, p_dtSeg, p_oper ) {   var v_prim  = montaData( p_dtPrim );   var v_seg   = montaData( p_dtSeg );   p_oper = ( p_oper ) ? p_oper : '<';     if ( !v_prim || !v_seg ) return false;     var v_data1 = v_prim[ 2 ] + v_prim[ 1 ] + v_prim[ 0 ];   var v_data2 = v_seg[ 2 ] + v_seg[ 1 ] + v_seg[ 0 ];   var v_result = eval(v_data1 + p_oper + v_data2);   return v_result;}</script>

Obs.: altere o nome "MeuForm" e "MeuCampo" para o nome certo do seu form e do seu campo na linha 6: document.MeuForm.MeuCampo.focus();

 

Use esse botão para verificar:

 

<input type="button" name="verificar" value="Verificar" onClick="verifica()">

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use isso entre as tags <head> e </head>

<script>function verifica () {  if (comparaData( v_data1, v_data2, '<=' )) alert('Datas estão certas!');  else {	alert('ATENÇÃO: Data de saída é menor que data de entrada');	document.MeuForm.MeuCampo.focus();  }}// Função que monta a data no formato correto para compará-lafunction montaData( p_data ) {   var diasMeses = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);   var v_exp = /(0?[1-9]|[12][0-9]|3[01])[\-\/](1[0-2]|0?[1-9])[\-\/]((19|20)?\d{2})$/;   if ( v_exp.test( p_data ) ) {	  var v_data = v_exp.exec( p_data );	  var v_dia = v_data[ 1 ];	  var v_mes = v_data[ 2 ];	  var v_ano = ( v_data[ 4 ] ) ? v_data[ 3 ] : '19' + v_data[ 3 ];	  diasMeses[2] = (  ( v_ano % 400 == 0 ) || (( v_ano % 4 == 0 ) && ( v_ano % 100 != 0 ))  ) ? 29 : 28;:wacko: 	  if ( v_dia <= diasMeses[ v_mes ] )		 return [ v_dia, v_mes, v_ano ];   }   return null;}  // Função que faz a comparação mesmofunction comparaData( p_dtPrim, p_dtSeg, p_oper ) {   var v_prim  = montaData( p_dtPrim );   var v_seg   = montaData( p_dtSeg );   p_oper = ( p_oper ) ? p_oper : '<';     if ( !v_prim || !v_seg ) return false;     var v_data1 = v_prim[ 2 ] + v_prim[ 1 ] + v_prim[ 0 ];   var v_data2 = v_seg[ 2 ] + v_seg[ 1 ] + v_seg[ 0 ];   var v_result = eval(v_data1 + p_oper + v_data2);   return v_result;}</script>
Obs.: altere o nome "MeuForm" e "MeuCampo" para o nome certo do seu form e do seu campo na linha 6: document.MeuForm.MeuCampo.focus();Use esse botão para verificar:
<input type="button" name="verificar" value="Verificar" onClick="verifica()">
;)
Só mais essa e prometo q não te pertubo mais, é o seguinte, tem como eu usar um outro meio se verificar a data sem ser pelo botão?Eu gostaria que funcionasse assim, a pessoa vai preenchendo o formulário e teria o campo entrada que ele preencheria e logo em seguida o campo saída e após ele preencher este no próximo campo ao apertar tab ou selecionar o campo seguinte haveria a verificação sem a necessidade de criar um botão, eu poderia fazer assim no form seguinte ao campo saida ou no próprio campo colocar a função onKeyUp="comparaData();" ??? :rolleyes: Mas de qualquer forma, valeu mesmo, você já me ajudou muito, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use isso entre as tags <head> e </head>

<script>function verifica () {  if (comparaData( document.MeuForm.MeuCampoData1.value, document.MeuForm.MeuCampoData2.value, '<=' )) alert('Datas estão certas!');  else {	alert('ATENÇÃO: Data de saída é menor que data de entrada');	document.MeuForm.MeuCampoData1.focus();  }}// Função que monta a data no formato correto para compará-lafunction montaData( p_data ) {   var diasMeses = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);   var v_exp = /(0?[1-9]|[12][0-9]|3[01])[\-\/](1[0-2]|0?[1-9])[\-\/]((19|20)?\d{2})$/;   if ( v_exp.test( p_data ) ) {	  var v_data = v_exp.exec( p_data );	  var v_dia = v_data[ 1 ];	  var v_mes = v_data[ 2 ];	  var v_ano = ( v_data[ 4 ] ) ? v_data[ 3 ] : '19' + v_data[ 3 ];	  diasMeses[2] = (  ( v_ano % 400 == 0 ) || (( v_ano % 4 == 0 ) && ( v_ano % 100 != 0 ))  ) ? 29 : 28;:wacko: 	  if ( v_dia <= diasMeses[ v_mes ] )		 return [ v_dia, v_mes, v_ano ];   }   return null;}  // Função que faz a comparação mesmofunction comparaData( p_dtPrim, p_dtSeg, p_oper ) {   var v_prim  = montaData( p_dtPrim );   var v_seg   = montaData( p_dtSeg );   p_oper = ( p_oper ) ? p_oper : '<';     if ( !v_prim || !v_seg ) return false;     var v_data1 = v_prim[ 2 ] + v_prim[ 1 ] + v_prim[ 0 ];   var v_data2 = v_seg[ 2 ] + v_seg[ 1 ] + v_seg[ 0 ];   var v_result = eval(v_data1 + p_oper + v_data2);   return v_result;}</script>
Obs.: altere o nome "MeuForm" e "MeuCampoDataN" para o nome certo do seu form e do seu campo nas linhas 3 e 6: document.MeuForm.MeuCampo.focus();

 

No campo da data de saída, você coloca:

<input ................ onBlur="verifica();">

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.