Foros del Web » Programando para Internet » PHP »

Como dividir un numero en años, meses y dias

Estas en el tema de Como dividir un numero en años, meses y dias en el foro de PHP en Foros del Web. Hola a todos les cuento que encontré una función para calcular los días transcurridos entre dos fechas y si es muy útil pero lo que ...
  #1 (permalink)  
Antiguo 25/04/2012, 13:37
Avatar de AsderPunk  
Fecha de Ingreso: agosto-2010
Mensajes: 39
Antigüedad: 13 años, 8 meses
Puntos: 3
Como dividir un numero en años, meses y dias

Hola a todos les cuento que encontré una función para calcular los días transcurridos entre dos fechas y si es muy útil pero lo que yo necesito es algo parecido a esto:

Ingrese el número de días: 1650

Resultado:
• 4 Años
• 6 Meses
• 8 Días

Si alguien me puede ayudar se lo agradecería demasiado.

Estoy programando en PHP y aquí dejo la función para quien la necesite:

Código PHP:
$calc_fecha "2010-08-20";

function 
FechaGarantia($calc_fecha)

    
//defino fecha 1 
    
$fecha1explode("-",$fecha1); 
    
$ano1 $fecha1[2]; 
    
$mes1 $fecha1[1]; 
    
$dia1 $fecha1[0]; 
    
//defino fecha 2 
    
$ano2 date("Y"); 
    
$mes2 date("m"); 
    
$dia2 date("d"); 
    
//calculo timestam de las dos fechas 
    
$timestamp1 mktime(0,0,0,$mes1,$dia1,$ano1); 
    
$timestamp2 mktime(0,0,0,$mes2,$dia2,$ano2); //20110520-20110627 
    //resto a una fecha la otra 
    
$segundos_diferencia $timestamp2 $timestamp1
    
//echo $segundos_diferencia; 
    //convierto segundos en días 
    
$dias_diferencia $segundos_diferencia / (60 60 24); 
    
//obtengo el valor absoulto de los días (quito el posible signo negativo) 
    
$dias_diferencia abs($dias_diferencia); 
    
//quito los decimales a los días de diferencia 
    
$dias_diferencia floor($dias_diferencia); 
    return 
$dias_diferencia;  

Saludos..!
  #2 (permalink)  
Antiguo 25/04/2012, 14:49
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Como dividir un numero en años, meses y dias

para calcular el número de días entro dos fechas, tienes timestampdiff()
y en cuanto a lo que te ocupar from_days()
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 25/04/2012, 15:39
Avatar de AsderPunk  
Fecha de Ingreso: agosto-2010
Mensajes: 39
Antigüedad: 13 años, 8 meses
Puntos: 3
Mensaje Respuesta: Como dividir un numero en años, meses y dias

Gracias por tu respuesta IsaBelM pero estuve buscando también y encontré algo que se acoplo perfectamente a lo que necesitaba aquí dejo la solución:

Código PHP:
        //Dividir fecha de ingreso en año - mes - dia
        
$fecha1explode("-",$res_aex[0]); 
        
$fecha explode("-",date('Y-m-d'));
        
//FECHAINICIO
        
$dia1 $fecha1[2]; 
        
$mes1 $fecha1[1]; 
        
$ano1 $fecha1[0];
        
        
//FECHAFIN
        
$dia2 $fecha[2];
        
$mes2 $fecha[1];
        
$ano2 $fecha[0];
        
        
$anos $ano2 $ano1
         if(
$mes1 $mes2) {
            
$anos $anos 1;
        }
        if(
$mes2 $mes1) {
               
$meses = (12 $mes1) + $mes2;
        } else {
            
$meses $mes2 $mes1;
        }
        if(
$dia2 $dia1) {
            
$meses $meses 1;
        }
        if(
$mes2 === $mes1) { 
            
$anos $anos 1;
            
$meses 11;
        }
        
        
$dias $dia2 $dia1;
        if(
$dias 0) {
            
$ms $mes2 1;
            if(
$ms 0) {
                
$ms 12;
            }
            if(
$ms===or $ms===or $ms===or $ms===or $ms===or $ms===10 or $ms===12) {
                
$dias 31 $dias;
            }
            if(
$ms===or $ms===or $ms===or $ms===11) {
                
$dias 30 $dias;
            }
            if(
$ms===2) {
                
$mod1 $ano2 4;
                
$mod2 $ano2 100;
                
$mod3 $ano2 400;
                if((
$mod1 === and $mod2 <> 0) or $mod3 === 0) {
                    
$dias 29 $dias;
                } else {
                    
$dias 28 $dias;
                }
            }
        }
           
$pdf->SetFillColor(207,243,213);
           
$pdf->SetTextColor(8,134,107);
           
$pdf->SetFont('arial','',8);
           
$pdf->Cell(95,5,        $anos.utf8_decode(" AÑOS, ").($meses+1)." MESES, ".$diasutf8_decode(" DÍAS."),1,1,'L'); 
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 13:59.