[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