Java Script, calculo de datas: Objeto Date - Como fazer contabilizar os meses ? [RESOLVIDO]

4 respostas
neeryck

Esse é ótimo para horas.

http://www.guj.com.br/posts/list/100723.java

Como não está exatamente no mesmo contexto, e já faz um tempo desde que o mesmo foi criado, criei um outro!

Preciso Fazer um similar.
Há uma data inicial e outra final, preciso saber se ultrapassa o limite de 1 ano (ou 12 meses considerando os bissextos), dessa forma, a validação será feita.

Tentei algo como:

var dias = Math.floor((dataFinal.getTime() - dataInicial.getTime()) / 1000.0 / 86400.00);

Isso funciona em Java, mas em javascript não consigo. E esse não considera os bissextos e tal… apenas faz um calculo sem consistência.

Será que alguém tem algo que calcule os Meses??? O range entre dataInicial e dataFinal SÓ PODE SER ENTRE 1 ANO.

[]'s

4 Respostas

Scoobydoo

Kara, da uma olhada nesse meu javascript.
Note que ele fais o calculo de Dias entre 2 datas..
Simples, transforme agora para Mês.
Espero ter ajudado.

<html> 
<head> 
<script type="text/javascript" language="javascript""> 

function Dia(Data_DDMMYYYY){ 
string_data = Data_DDMMYYYY.toString(); 
posicao_barra = string_data.indexOf("/"); 
if (posicao_barra!= -1){ 
dia = string_data.substring(0,posicao_barra); 
return dia; 
} 
} 

function Mes(Data_DDMMYYYY){ 
string_data = Data_DDMMYYYY.toString(); 
posicao_barra = string_data.indexOf("/"); 
if (posicao_barra!= -1){ 
dia = string_data.substring(0,posicao_barra); 
string_mes = string_data.substring(posicao_barra+1,string_data.length); 
posicao_barra = string_mes.indexOf("/"); 
if (posicao_barra!= -1){ 
mes = string_mes.substring(0,posicao_barra); 
return mes; 
} }} 
function Ano(Data_DDMMYYYY) { 
string_data = Data_DDMMYYYY.toString(); 

posicao_barra = string_data.indexOf("/"); 

if (posicao_barra!= -1) { 
dia = string_data.substring(0,posicao_barra); 
string_mes = string_data.substring(posicao_barra+1,string_data.length); 
posicao_barra = string_mes.indexOf("/"); 
if (posicao_barra!= -1) { 
mes = string_mes.substring(0,posicao_barra); 
mes = Math.floor(mes); 
ano = string_mes.substring(posicao_barra+1,string_mes.length); 
return ano; 
} 
}} 

function seta_periodo(){ 
var data1_DDMMYYYY = document.getElementById('Data1').value; 
var data2_DDMMYYYY = document.getElementById('Data2').value; 

Var_Dia1=Dia(data1_DDMMYYYY); 
Var_Mes1=Mes(data1_DDMMYYYY); 
Var_Ano1=Ano(data1_DDMMYYYY); 
Var_Dia2=Dia(data2_DDMMYYYY); 
Var_Mes2=Mes(data2_DDMMYYYY); 
Var_Ano2=Ano(data2_DDMMYYYY); 

var data1 = new Date(Var_Ano1,(Var_Mes1)-(1),Var_Dia1); 
var data2 = new Date(Var_Ano2,(Var_Mes2)-(1),Var_Dia2); 
var diferenca = data2.getTime() - data1.getTime(); 
alert(' a diferença é: ' + diferenca/(1000*60*60*24) +' dias !'); 
document.form_data.numero_dias.value = diferenca/(1000*60*60*24); 
} 

</script> 
</head> 
<body> 
<form name=form_data><label for="Data1">Data1(**/**/****)</label> 
<input type="text" id="Data1" name="Data1"></input> <label for="Data2">Data2(**/**/****)</label> 
<input type="text" id="Data2" name="Data2"></input> <label 
for="numero_dias">Numero de Dias</label> <input type="text" 
name="numero_dias" id="numero_dias"></input> <input type="button" 
onClick="javascript:seta_periodo()" /></input>;</form> 
</body> 
</html>
J

Eu precisava de um igualzinho cara… não teria um mais simples aí??

Scoobydoo

Simples…
ta vendo onde eu seto document.form_data.numero_dias.value = diferenca/(1000*60*60*24);
O resultado esta sendo passado em Dias…
use o Padrao de que 1 mes tem 30 dias… entao… faça

é uma forma facil

neeryck

OW velhão! Desculpa a demora…
Funcionou mesmo… VLW PELA AJUDA!!

[]'s

Criado 20 de janeiro de 2010
Ultima resposta 25 de jan. de 2010
Respostas 4
Participantes 3