Foros del Web » Programando para Internet » PHP »

Calculo de Dias Por Año

Estas en el tema de Calculo de Dias Por Año en el foro de PHP en Foros del Web. Que tal compañeros un gusto saludarles Les comento, tengo la siguiente duda Estoy realizando un sistema para el calculo de finiquitos y mi problema es ...
  #1 (permalink)  
Antiguo 10/11/2010, 15:27
 
Fecha de Ingreso: abril-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Pregunta Calculo de Dias Por Año

Que tal compañeros un gusto saludarles

Les comento, tengo la siguiente duda

Estoy realizando un sistema para el calculo de finiquitos y mi problema es que debo obtener el total de dias por año que ha laborado una persona, es decir

de mi base (mysql) puedo extraer la fecha de ingreso y la fecha de baja y lo q necesito hacer es algo como esto:

Partiendo de estos datos:
Fecha de Ingreso: 2005/05/05
Fecha Baja: 2010/11/10

Debo obtener:

Dias trabajados en 2005: x
Dias Trabajados en 2006:x
Dias trabajados en 2007:x
Dias trabajados en 2008:x
Dias trabajados en 2009:x
Dias trabajados en 2010:x
Total de Dias:x

Alguien sabe si puedo realizar este calculo o como realizarlo directamente en la base de datos para despues solo mostrarlo o seria mas facil realizar el calculo en la pagina con php.

Saludos y espero puedan darme una pista.
  #2 (permalink)  
Antiguo 10/11/2010, 15:30
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Calculo de Dias Por Año

DATEDIFF(FECHA termino, FECHA Inicio)

http://dev.mysql.com/doc/refman/5.1/...functions.html
  #3 (permalink)  
Antiguo 10/11/2010, 15:39
 
Fecha de Ingreso: abril-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Respuesta: Calculo de Dias Por Año

Si , tengo entendido que con DateDiff puedo encontrar el total de dias pero mi duda es como hacer el desglose de dias por cada año correspondiente, se me ocurre un ciclo o algo asi pero no tengo idea de como aplicarlo para obtener esto:

Partiendo de estos datos:
Fecha de Ingreso: 2005/05/05
Fecha Baja: 2010/11/10

Debo obtener:

Dias trabajados en 2005: x
Dias Trabajados en 2006:x
Dias trabajados en 2007:x
Dias trabajados en 2008:x
Dias trabajados en 2009:x
Dias trabajados en 2010:x
Total de Dias:x
  #4 (permalink)  
Antiguo 10/11/2010, 15:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Calculo de Dias Por Año

pero que los dias trabajados van a dependen de muchos factores, tendrias que primero separar fines de semana y festivos.

se me ocurre en php hacer un for que recorra todas las fechas(de inicio a fin) y si el dia es diferente a sabado y domingo sume un contador, para los festivos tendrias que ir poniendo mas if con la fecha especifica
  #5 (permalink)  
Antiguo 10/11/2010, 15:52
 
Fecha de Ingreso: abril-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Respuesta: Calculo de Dias Por Año

De hecho en este caso no importa los dias festivos ni fines de semanas, ya que solo me interesa obtener el total de dias trabajados por cada año, sin tomar en cuenta factores como dias festivos ni fines de semana.
  #6 (permalink)  
Antiguo 10/11/2010, 23:39
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Calculo de Dias Por Año

Cita:
Iniciado por kike278 Ver Mensaje
Que tal compañeros un gusto saludarles

Les comento, tengo la siguiente duda

Estoy realizando un sistema para el calculo de finiquitos y mi problema es que debo obtener el total de dias por año que ha laborado una persona, es decir

de mi base (mysql) puedo extraer la fecha de ingreso y la fecha de baja y lo q necesito hacer es algo como esto:

Partiendo de estos datos:
Fecha de Ingreso: 2005/05/05
Fecha Baja: 2010/11/10

Debo obtener:

Dias trabajados en 2005: x
Dias Trabajados en 2006:x
Dias trabajados en 2007:x
Dias trabajados en 2008:x
Dias trabajados en 2009:x
Dias trabajados en 2010:x
Total de Dias:x

Alguien sabe si puedo realizar este calculo o como realizarlo directamente en la base de datos para despues solo mostrarlo o seria mas facil realizar el calculo en la pagina con php.

Saludos y espero puedan darme una pista.

Me imagino que como buen cristiano se trabaja de lunes a viernes, y lo que quieres es solo tener el resultado final del mes o por semanas??

Bueno si es por semanas deberias crear unos campos donde puedes poner el numero de dias de la semana.

Si es por mes creas un campo y puedes poner los dias del mes, como resultado de todo los meses tienes el total de dias de todo el año

Cita:
Semana
campo semana -> X dias

Mes
campo mes -> X dias

campo año - > Total de X Dias del año
Cita:

Semana:

Lunes
Martes
Miercoles
Jueves
Viernes
Total -> X dias

Mes
campo mes -> X dias

campo año - > Total de X Dias del año
  #7 (permalink)  
Antiguo 15/11/2010, 20:33
 
Fecha de Ingreso: abril-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Respuesta: Calculo de Dias Por Año

Hola, nuevamente estoy de regreso ya que por ocupacion en otros proyectos deje de lado este problema por un momento.

con este script estoy delimitando los años

<?php

//suponiendo que alguien ngreso en 2005 y termino en 2008

$tope = date("Y");
$edad_max = 5;
$edad_min = 2;
for($a= $tope - $edad_max; $a<=$tope - $edad_min; $a++)
echo $a."<br>";
?>

esto me arroja como resultado:

2005
2006
2007
2008

ahora bien con este script obtengo la diferencia de dias

<?php

$int_nodias = floor(abs(strtotime("07/13/2005") - strtotime("07/20/2008"))/86400);

echo $int_nodias;
?>

lo que necesito es por asi decirlo unir estos script para obtener algo como esto

2005 - 71
2006 - 365
2007 - 365
2008 - 164
Total de dias: 965

Esto es sin importar dias festivos ni fines de semana.

Espero alguien pueda darme una pequeña orientacion, saludos.
  #8 (permalink)  
Antiguo 19/11/2010, 12:43
 
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
  #9 (permalink)  
Antiguo 13/01/2011, 10:52
 
Fecha de Ingreso: abril-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Pregunta Respuesta: Calculo de Dias Por Año

hasta hoy puede revisar el foro debido a que andube ausente un tiempo, la respuesta que legion6000 me proporciona es justo lo que necesitaba, te agradezco.
Ahora mi duda es, como extraer del resultado que me arroja un año en especifico es decir:

Período del 13/07/2005 al 20/07/2008
2005 - 172
2006 - 365
2007 - 365
2008 - 202

del listado anterior deseo seleccionar los 202 dias del ultimo periodo para hacer operaciones con esa cantidad, en si mi duda es como hago referencia a los dias del ultimo año para poder hacer calculos con esa cifra.

Etiquetas: año, calculo, dias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:04.