Bueno, acá les dejo otro aporte, pasó un año pero más vale tarde que nunca.
Recuerden que en javascript los meses van desde el 0 hasta el 11, siendo 0 enero y 11 diciembre.
Recuerden que en javascript los meses van desde el 0 hasta el 11, siendo 0 enero y 11 diciembre.
/**
* Devuelve la diferencia en dias entre dos fechas
* Se esperan fechas con formato:
* d/m/aaaa hh:mm:ss:ms
* puede ser:
* mes/anio, d/m/aaaa, d/m/aaaa hh, d/m/aaaa hh:mm, d/m/aaaa hh:mm:ss, d/m/aaaa hh:mm:ss:ms
* Si el dia no es provisto se utiliza "1" para el mismo.
*
* @author Matias Perrone - Global Innovation - http://www.globalinnovation.com.ar
* @param string fecha1 La fecha hasta
* @param string fecha2 La fecha desde
* @returns int
*/
function dateTimeDiff(fecha1, fecha2)
{
var vecFecha1, vecFecha2, diff;
// Si no son válidas
if(fecha1.length <= 0 || fecha2.length <= 0)
return 0;
// Array con la fecha
vecFechaHora1 = fecha1.split(' ');
vecFechaHora2 = fecha2.split(' ');
vecFecha1 = vecFechaHora1[0].split('/');
vecFecha2 = vecFechaHora2[0].split('/');
if (vecFechaHora1.length > 1)
vecHora1 = vecFechaHora1[1].split(':');
else
vecHora1 = new Array();
if (vecFechaHora2.length > 1)
vecHora2 = vecFechaHora2[1].split(':');
else
vecHora2 = new Array();
if (vecFecha1.length >= 2)
{
if (vecFecha1.length == 2)
date1 = Date.UTC(vecFecha1[0], (vecFecha1[1] - 1), 1);
else if (vecHora1.length == 0 && vecFecha1.length == 3)
date1 = Date.UTC(vecFecha1[2], (vecFecha1[1] - 1), vecFecha1[0]);
else if (vecHora1.length == 1 && vecFecha1.length == 3)
date1 = Date.UTC(vecFecha1[2], (vecFecha1[1] - 1), vecFecha1[0], vecHora1[0]);
else if (vecHora1.length == 2 && vecFecha1.length == 3)
date1 = Date.UTC(vecFecha1[2], (vecFecha1[1] - 1), vecFecha1[0], vecHora1[0], vecHora1[1]);
else if (vecHora1.length == 3 && vecFecha1.length == 3)
date1 = Date.UTC(vecFecha1[2], (vecFecha1[1] - 1), vecFecha1[0], vecHora1[0], vecHora1[1], vecHora1[2]);
else if (vecHora1.length == 4 && vecFecha1.length == 3)
date1 = Date.UTC(vecFecha1[2], (vecFecha1[1] - 1), vecFecha1[0], vecHora1[0], vecHora1[1], vecHora1[2], vecHora1[3]);
else
return 0;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (vecFecha2.length == 2)
date2 = Date.UTC(vecFecha2[0], (vecFecha2[1] - 1));
else if (vecHora2.length == 0 && vecFecha2.length == 3)
date2 = Date.UTC(vecFecha2[2], (vecFecha2[1] - 1), vecFecha2[0]);
else if (vecHora2.length == 1 && vecFecha2.length == 3)
date2 = Date.UTC(vecFecha2[2], (vecFecha2[1] - 1), vecFecha2[0], vecHora2[0]);
else if (vecHora2.length == 2 && vecFecha2.length == 3)
date2 = Date.UTC(vecFecha2[2], (vecFecha2[1] - 1), vecFecha2[0], vecHora2[0], vecHora2[1]);
else if (vecHora2.length == 3 && vecFecha2.length == 3)
date2 = Date.UTC(vecFecha2[2], (vecFecha2[1] - 1), vecFecha2[0], vecHora2[0], vecHora2[1], vecHora2[2]);
else if (vecHora2.length == 4 && vecFecha2.length == 3)
date2 = Date.UTC(vecFecha2[2], (vecFecha2[1] - 1), vecFecha2[0], vecHora2[0], vecHora2[1], vecHora2[2], vecHora2[3]);
else
return 0;
}
else
return 0;
// Los meses van del 0 al 11 en JavaScript
// new Date (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] )
// getTime() devuelve la cantidad de milisegundos
// desde 1 de Enero de 1970.
diff = date1 - date2;
// 86400000 es la cantidad de milisegundos en un dia
if (!isNaN(diff))
return (diff/86400000 * -1);
else
return 0;
}