Foros del Web » Programando para Internet » PHP »

Convertir segundos a años, meses, dias

Estas en el tema de Convertir segundos a años, meses, dias en el foro de PHP en Foros del Web. Pues eso... me gustaria saber como hacer esta conversacion porque no me sale de ninguna manera... Es para la edad de una persona... "tienes 21 ...
  #1 (permalink)  
Antiguo 24/02/2009, 14:32
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Convertir segundos a años, meses, dias

Pues eso... me gustaria saber como hacer esta conversacion porque no me sale de ninguna manera... Es para la edad de una persona... "tienes 21 años, 11 meses y 10 dias" por ejemplo... Eso es lo que me gustaria, pero solo se hacer los años...

Código php:
Ver original
  1. function convert_data($valor)
  2.     {
  3.         (($valor % 4) == 0)? $d = 365 : $d = 366;
  4.         $data = array();
  5.         $data["any"] = floor($valor/(60*60*24*$d));
  6.         $data["mes"] = ;
  7.         $data["dia"] = ;
  8.        
  9.         return($data);
  10.     }
  #2 (permalink)  
Antiguo 24/02/2009, 14:36
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Convertir segundos a años, meses, dias

La division de $data['any'] te va a dar un numero flotante (sin el floor y suponiendo que el usuario no cumpla años hoy).

Solo toma la parte decimal, osea si te da: 21.647
Tomas la parte decimal, que es 0.647 y la vuelves a multiplicar por $valor, eso te da el tiempo RESTANTE en segundos, a ese tiempo lo divides entre el numero de segundos que tiene un mes, y haces lo mismo con el dia.

EDIT: Ahora que me acuerdo, PHP tiene el operador MODULO/MODULUS (%), que te da el residuo de una division, con eso tambien lo puedes hacer.

Última edición por Ronruby; 24/02/2009 a las 15:04
  #3 (permalink)  
Antiguo 24/02/2009, 14:51
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Convertir segundos a años, meses, dias

Si lo que pasa es que lo intento hacer con el modulo ("%") pero me da mas grande el valor del modulo que no el de los mismo segundos y ademas si el año es 21,87234.. el modulo me saca otro valor 658764... nada que ver con los decimales de la division...
  #4 (permalink)  
Antiguo 24/02/2009, 14:57
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Convertir segundos a años, meses, dias

Prueba esto a ver:

Código php:
Ver original
  1. <?php
  2. function convert_data($valor)
  3.     {
  4.         (($valor&#37;4) == 0)? $d = 365 : $d = 366;
  5.        $data = array();
  6.         $data["any"] = floor($valor/(60*60*24*$d));
  7.         $restante = $valor%(60*60*24*$d);
  8.         $data["mes"] = floor($restante/(60*60*24*30));
  9.         $restante = $restante%(60*60*24*30);
  10.         $data["dia"] = floor($restante/(60*60*24));
  11.        
  12.         return($data);
  13. }
  14. ?>

PD: Por alguna razon edita el primer % de arriba y lo convierte a su entidad HTML.
EDIT: Tu funcion no es para calcular la edad? Entonces tienes que a time() restarle la variable $valor. Y no hagas la comparacion directamente para saber los años bisiestos. Tienes que calcular los años bisiestos desde la fecha dada hasta hoy.

Última edición por Ronruby; 24/02/2009 a las 15:05
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 21:24.