Cria data de acordo com número de dias informado.

SCRIPT:

<script language="javascript" type="text/javascript">
//*************************************//
// SCRIPT CALCULA NÚMERO DE DIAS       //
// AUTOR      : Édson Kuzniewski (Br0w)//
// E-MAIL     : [email protected]     //
// DATA       : 27/06/2007             //
// ATUALIZAÇÃO: 24/02/2008             //
// VERSÃO     : 1.1.0.0                //
//*************************************//

function calculaDias(dtInicio, dias){
	var flagDT = false;
	var flagD  = false;
	var alerta="[ERROS ENCONTRADOS]=================\n\n";
	if( dtInicio == null || dtInicio == ""){
		alerta = alerta+'Campo [DATA INICIO] em branco!\n';
	}else{
		flagDT = true;
		if( verificaData(dtInicio) ){
			flagDT = true;
		}else{
			flagDT = false;
			alerta = alerta+'Campo [DATA INICIO] não é uma data válida!\n';
		}
	}
	if( dias == null || dias == ""){
		alerta = alerta+'Campo [DIAS] em branco!\n';
	}else{
		flagD = true;
		if( isInt(dias) ){
			result = true;
		}else{
			flagD = false;
			alerta = alerta+'Campo [DIAS] não é um número inteiro válido!\n';
		}
	}

	/* Verifica data */
	function verificaData(dt) {
		var result = false;

		var pFmt2 = 5;
		var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/;
		var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/;
		var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/;
		var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
		var reDate5 = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
		var reDate = reDate4;

		eval("reDate = reDate" + pFmt2);
		if (reDate.test(dt)) {
			result = true;
		} else if (dt != null && dt != "") {
			result = false;
		}
		if (result == false) {
			return false
		}else{
			return true
		}
	}

	/* Verifica se é inteiro! */
	function isInt(valor) {
		var temp=parseInt(valor);
		if (isNaN(temp)){
	   		return false;
		}else{
	 		return valor==temp && valor.toString()==temp.toString();
		}
	 }

	if( flagDT == true && flagD == true ){
		um_dia = (100*60*60*24);
		diass = ((dias*um_dia)*10);
		data = dtInicio.split("/");
		dia = data[0];
		mes = (data[1]-1);
		ano = data[2];
		dat = new Date(ano,mes,dia,0,0,0);
		emiss = (dat.getTime()+diass);
		dataFinal = new Date(emiss);
		calc01 = dataFinal.toLocaleDateString();
		ult = dataFinal.toLocaleDateString().split(" ");
		//[ DIA ]====================================\
		diaN="";
		if(ult[1] < 10){
			diaN="0"+ult[1];
		}else{
			diaN=ult[1];
		}
		//===========================================/
		//[ MES ]====================================\
		mesN="";
		if(ult[3] == "janeiro"){ mesN="01"; }
		if(ult[3] == "fevereiro"){ mesN="02"; }
		if(ult[3] == "março"){ mesN="03"; }
		if(ult[3] == "abril"){ mesN="04"; }
		if(ult[3] == "maio"){ mesN="05"; }
		if(ult[3] == "junho"){ mesN="06"; }
		if(ult[3] == "julho"){ mesN="07"; }
		if(ult[3] == "agosto"){ mesN="08"; }
		if(ult[3] == "setembro"){ mesN="09"; }
		if(ult[3] == "outubro"){ mesN="10"; }
		if(ult[3] == "novembro"){ mesN="11"; }
		if(ult[3] == "dezembro"){ mesN="12"; }
		//===========================================/
		document.form.dtFim.value=''+diaN+"/"+mesN+"/"+ult[5];
	}else{
		alert(''+alerta);
	}
}
</script>

HTML:

<form name="form" method="post" action="">
<table width="100%"  border="0" cellpadding="5" cellspacing="0" class="preempenhoTable">
  <tr>
    <td align="left" valign="top" scope="col"><strong>Data INIICO:</strong>
      <input name="dtInicio" type="text" id="dtInicio" size="12" maxlength="10" value="">
    </td>
    <td align="center" valign="top" scope="col"><strong>+ Dias:
      <input name="dias" type="text" id="dias" size="3" maxlength="4" />
      <input name="calc" type="button" id="calc" value="Calcular"
       onclick="calculaDias(dtInicio.value,dias.value);" />
    </strong></td>
    <td align="right" valign="top" scope="col"><strong>Data FIM:</strong>
        <input type="text" name="dtFim" id="dtFim" size="10" maxlength="10" value="" />
    </td>
  </tr>
</table>
</form>

RESULTADO

One thought on “Cria data de acordo com número de dias informado.”

Deixe um comentário

O seu endereço de e-mail não será publicado.