Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/09/2010, 14:06
Avatar de repara2
repara2
 
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 16 años
Puntos: 331
Respuesta: Intervalo entre varias fechas

Te paso dos funciones que te pueden servir:

Código PHP:
<?php

// Las xDates están en formato dd-mm-yyyy cbruschi.blogspot.com
    
function rdates($xDate1, $xDate0) {
        return 
date2days(ymd($xDate1)) - date2days(ymd($xDate0));
    }

    
// xDate a días.
    
function date2days($xDate) {
        
// yyyy-mm-dd
        
list($anyo, $mes, $dia) = explode("-", $xDate);
    
        
// Días acumulados por meses.
        // Basta hasta novimbre.
        
$ar_dias = array(
            
31, 
            
31 + 28, 
            
31 + 28 + 31, 
            
31 + 28 + 31 + 30, 
            
31 + 28 + 31 + 30 + 31, 
            
31 + 28 + 31 + 30 + 31 + 30, 
            
31 + 28 + 31 + 30 + 31 + 30 + 31, 
            
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31, 
            
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30, 
            
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31, 
            
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30); 
    
        
$xReturn = floor(($anyo - 1901) * 365.25);
        
$xReturn += (($mes != 1) ? $ar_dias[$mes - 2] : 0);        // El array empieza en 0.
        
$xReturn += $dia;
        
$xReturn += (($mes > 2) && checkdate(02, 29, $anyo) ? 1 : 0);
    
        return 
$xReturn;
    }
    
    
// Cambia una xDate en formato dd-mm-yyyy al formato yyyy-mm-dd
    
function ymd($xDate){ 
        
$mixDate = explode($xDate[2], $xDate);
        
$laxDate=$mixDate[2]."-".$mixDate[1]."-".$mixDate[0]; 
        return 
$laxDate; 
    } 
    
    
/**
Intervalo 1: 01 - 09 - 2010 a 30 - 09 - 2010 = 30 días
Intervalo 2: 15 - 09 - 2010 a 15 - 10 - 2010 = 30 días
*/
    //Te quedas con la mayor y la menor, utiliza la db u otra funcion para calcularlas.
    
    
$int0 = "01-09-2010";
    
$int1 = "15-10-2010";
    
    echo 
rdates($int1, $int0);
    
    
?>
Lo pruebas y me cuentas, saludos