InicioOfftopicJavascript - diferencia en dias entre dos fechas

Javascript - diferencia en dias entre dos fechas

Offtopic7/23/2013
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.


/**
 *    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;

}
Datos archivados del Taringa! original
11puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

p
phpjs🇦🇷
Usuario
Puntos0
Posts3
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.