Ir para conteúdo

POWERED BY:

Arquivado

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

marcinhha

Adicionar dias em uma data

Recommended Posts

Eaih pessoal!!!Nossa, faz um tempão que não posto alguma coisa aqui.. mas vamos lá!Preciso de uma função que adicione dias em uma determinada data e lógico, que funcione no Firefox, Opera, etc etc etcAlguém tem a solução aih?Por favor, é urgente mesmo...Obrigada! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela resposta!

Mas aqui não deu não.. dá erro essa sua função...

 

Olha como estou tentando...

 

 

* Função para mostrar a data (que tá com BUGS)

 

function mostraDataFim(p_dias,p_dtInicio){if((p_dias.value != "") && (p_dtInicio.value != "")){		dia = p_dtInicio.value.charAt(0) + p_dtInicio.value.charAt(1);	mes = p_dtInicio.value.charAt(3) + p_dtInicio.value.charAt(4);	ano = p_dtInicio.value.charAt(6) + p_dtInicio.value.charAt(7) + p_dtInicio.value.charAt(8) + p_dtInicio.value.charAt(9);			if ((parseInt(mes) == 1) || (parseInt(mes) == 3) || (parseInt(mes) == 5) || (parseInt(mes) == 7) || (parseInt(mes) == 8) || (parseInt(mes) == 10) || (parseInt(mes) == 12))  ultimoDia = 31;	else if((parseInt(mes) ==4 ) || (parseInt(mes) == 6) || (parseInt(mes) == 9) || (parseInt(mes) == 11) )  ultimoDia = 30;	else if( (parseInt(ano) % 4 == 0)  && (parseInt(ano) % 100 != 0) ||  (parseInt(ano) % 400 == 0))  ultimoDia = 29;	else  ultimoDia = 28;  	while(p_dias.value > 0)	{	decr = 0;	diaAnt = dia;	dia = parseInt(dia) + parseInt(p_dias.value);  if(dia >= ultimoDia)  {  dia = 1;  decr = 1; 	 if (parseInt(mes) < 12) 	 {    mes = parseInt(mes) + 1; 	 } 	 else  	 {    mes = 1;    ano = parseInt(ano) + 1; 	 } 	 p_dias = p_dias.value - (ultimoDia - diaAnt) - decr;  }  else 	 p_dias = 0;  	if (dia < 10)  dia = "0" + parseInt(dia);	if (mes < 10)  mes= "0" + parseInt(mes);	}	dataFinal = dia + "/" + mes + "/" + ano;		 	 document.getElementById("textoDataFim").innerHTML = "Data de Fim:"; 	 document.getElementById("inputDataFim").innerHTML = dataFinal; 	 } }

 

* Funções para formatar e validar data:

 

function checaDataW3c(campo, evt){		tecla = !isNaN(evt.keyCode)? evt.keyCode: evt.which;	if ( tecla == 0)  tecla = evt.which;	if ((tecla != 0) &&  (tecla != 16) &&  (tecla != 17) && ((tecla < 47) || (tecla > 57)) && ((tecla != 8) && (tecla != 9) && (tecla != 13) && (tecla != 46)))	{  return false;		}  }function formataDataW3c(field) {	var checkstr = "0123456789";	var DateField = field;	var Datevalue = "";	var DateTemp = "";	var seperator = "/";	var day;	var month;	var year;	var leap = 0;	var err = 0;	var i;   err = 0;   DateValue = DateField.value;   /* Deleta todos os caracteres exceto de 0 a 9. */   for (i = 0; i < DateValue.length; i++) {   if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {      DateTemp = DateTemp + DateValue.substr(i,1);   }   }   DateValue = DateTemp;      if (DateValue.length == 6) {      DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }   if (DateValue.length != 8) {      err = 19;}      year = DateValue.substr(4,4);   if (year == 0) {      err = 20;   }      month = DateValue.substr(2,2);   if ((month < 1) || (month > 12)) {      err = 21;   }      day = DateValue.substr(0,2);   if (day < 1) {     err = 22;   }     if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {      leap = 1;   }   if ((month == 2) && (leap == 1) && (day > 29)) {      err = 23;   }   if ((month == 2) && (leap != 1) && (day > 28)) {      err = 24;   }      if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {      err = 25;   }   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {      err = 26;   }      if ((day == 0) && (month == 0) && (year == 00)) {      err = 0; day = ""; month = ""; year = ""; seperator = "";   }   if (err == 0) {      DateField.value = day + seperator + month + seperator + year;   }   else {      alert("Data inválida");      DateField.value = "";   DateField.focus();      }}

 

 

* Campo

 

<table><TR>          <TD> Data de Início:</TD>          <TD><input name="txt_dtInicio" type="text" class="" id="txt_dtInicio" onChange="mostraDataFim(frmViewCadLicSaude.txt_qtdeDias, this)" onBlur="formataDataW3c(this)" onKeyPress="return checaDataW3c(this, event)" size="12" maxlength="10"></TD>        </TR>        <TR>          <TD>Quantidade de Dias:</TD>          <TD><input name="txt_qtdeDias" type="text" id="txt_qtdeDias" onChange="mostraDataFim(this,frmViewCadLicSaude.txt_dtInicio)" size="3" maxlength="3"></TD>        </TR>        <TR>          <TD id="textoDataFim"> </TD>        </TR></table>

 

 

 

Esse código é o que estou usando... mas tá com uns probleminhas.. e agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah pessoal... achei uma solução hehehe

 

 

<html><head><title>Teste</title><script language=JavaScript>function numdias(mes,ano) {   if((mes<8 && mes%2==1) || (mes>7 && mes%2==0)) return 31;   if(mes!=2) return 30;   if(ano%4==0) return 29;   return 28;}function somadias(data, dias) {  data=data.split('/');  diafuturo=parseInt(data[0])+dias;  mes=parseInt(data[1]);  ano=parseInt(data[2]);  while(diafuturo>numdias(mes,ano)) {      diafuturo-=numdias(mes,ano);      mes++;      if(mes>12) {          mes=1;          ano++;      }  }  if(diafuturo<10) diafuturo='0'+diafuturo;  if(mes<10) mes='0'+mes;  return diafuturo+"/"+mes+"/"+ano;}alert(somadias("31/07/2005",10));</script></head><body></body></html>

 

Bem simples =)

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.