Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/11/2010, 12:43
legion6000
 
Fecha de Ingreso: noviembre-2010
Mensajes: 18
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Calculo de Dias Por Año

Tomando el dia inicial y el final como trabajados,
la solución es la siguiente:

Código PHP:
<?php

function diasPorAnio($fechaInicio$fechaFin)
{
    list(
$dia1,$mes1,$anio1)=explode("/",$fechaInicio);
    list(
$dia2,$mes2,$anio2)=explode("/",$fechaFin);
    
    
$anios=$anio1;
    
$total 0;
    while (
$anio2>=$anios)
    {
        if (
$anio2==$anios)
        {
            if (
$anio1==$anios)
                
$parcial round((strtotime("$anio2/$mes2/$dia2")-strtotime("$anio1/$mes1/$dia1"))/86400)+1;
            else
                
$parcial round((strtotime("$anio2/$mes2/$dia2")-strtotime("$anio2/1/1"))/86400)+1;
        }
        else
        {
            if (
$anio1==$anios)
                
$parcial round((strtotime("$anios/12/31")-strtotime("$anio1/$mes1/$dia1"))/86400)+1;
            else
                
$parcial round(((strtotime("$anios/12/31")-strtotime("$anios/1/1"))/86400))+1;
        }
        echo 
"$anios - $parcial <br>";
        
$anios $anios 1;
        
$total $total $parcial;
    }
    echo 
"Total de dias: $total <br>";
}

$fechaInicio "01/11/2010";
$fechaFin "20/11/2010";
echo 
"Período del $fechaInicio al $fechaFin <br>";
diasPorAnio($fechaInicio$fechaFin);

echo 
"<br><br>";
$fechaInicio "13/07/2005";
$fechaFin "20/07/2008";
echo 
"Período del $fechaInicio al $fechaFin <br>";
diasPorAnio($fechaInicio$fechaFin);

?>
Resultado:
Cita:
Período del 01/11/2010 al 20/11/2010
2010 - 20
Total de dias: 20


Período del 13/07/2005 al 20/07/2008
2005 - 172
2006 - 365
2007 - 365
2008 - 202
Total de dias: 1104

__________________

Si no me aumentas karma, no me motivas a ayudarte