Calcular intervalo de Datas!

Pessoal vi um topico aqui no forum porem não esta funcionando!
Preciso fazer um calculo de datas para verfificar se tem mais de 31 dias.

Omeu codigo esta assim

[code] var one_day=10006060*24;

	var data_inicial = document.form.dataDe.value; //pegando data inicial 
var data_final = document.form.dataAte.value; //pegando data fim

    alert(Math.ceil((data_final - data_inicial)/one_day)+" dias!")[/code]

mas no alert esta me retornando isso

             "NaN dias!"

o que pode estar errado?
Vlw Galera!!

Sim, pois os valores não são números, camarada.
Você precisa converter para um tipo numérico.
No w3schools.com você encontra meios de fazer isso.

Isso pode lhe ajudar http://javafree.uol.com.br/topic-875440-Calculando-o-numero-de-dias-entre-duas-datas.html

[quote=drsmachado]Sim, pois os valores não são números, camarada.
Você precisa converter para um tipo numérico.
No w3schools.com você encontra meios de fazer isso.[/quote]
Aiiiii, doi no coracao que eu leio essas coisas. =/

O problema que eh voce precisa ter objetos Date para fazer esse calculo.
Voce esta pegando os valores como texto:

var data_inicial = document.form.dataDe.value; //pegando data inicial   
var data_final = document.form.dataAte.value; //pegando data fim  

Esse codigo data_inicial e data_final vai ser texto, por isso quando vc faz o calculo vc vai ter como resultado NaN (Not a Number).

Vc precisa fazer uma funcao para fazer o parser dessa data (string) para data (Date), por exemplo:

function transformDate(data) {
    var d = data.split('/'); // ** tem que mudar dependendo do formato de data que voce usar!! **
    // [0] = dia
    // [1] = mes
    // [2] = ano
    return new Date(d[2], d[1]-1, d[0]);
}
var data1 = "01/01/2012";
console.log(transformDate(data1));
// console output : Date {Sun Jan 01 2012 00:00:00 GMT+0100}

Pronto, agora que voce tem a funcao para conveter o valor para data, eh soh fazer o calculo:

function diferencaEmDias(dataInicial, dataFinal) {
    var divisor = (1000*60*60*24);
    return (dataFinal-DataInicial)/divisor;
}
var data1 = "01/01/2012";
var data2 = "10/02/2012";

var dias = diferencaEmDias(data1, data2);
console.info("Diferenca em dias eh : " + dias);
// console output: Diferenca em dias eh : 40

Exemplo online : http://jsfiddle.net/LvjAR/2/

Vale lembrar que : Calculo de datas desse tipo eh extremamente complicado, por causa de horario de verao e ate dias que tem menos que 24 horas, esses exemplos que eu coloquei para voce servem de inspiracao para fazer algo mais elaborado e consistente. Tente fazer alguns experimentos, tente simular horario de verao para ver se funciona corretamente.

//Daniel

Daniel muito obrigado por compartilhar do seu conhecimento!! Vlw Me ajudou muito :slight_smile:
Abrç