Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como lo Hago?

Estas en el tema de Como lo Hago? en el foro de PHP en Foros del Web. Tengo un problema con el tiempo transcurrido, quiero mostrar el tiempo que diga así: hace 1 año, 2 meses, 3 días, 4 horas, 5 minutos, ...
  #1 (permalink)  
Antiguo 15/12/2013, 15:14
 
Fecha de Ingreso: noviembre-2013
Ubicación: Limon
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 0
Como lo Hago?

Tengo un problema con el tiempo transcurrido, quiero mostrar el tiempo que diga así:
hace 1 año, 2 meses, 3 días, 4 horas, 5 minutos, 6 segundos.

Bueno esto sí lo pude hacer, pero quiero que muestre sólo los que se necesitan en el momento, por ejemplo agrego el archivo hace 1 minuto pero el php muestra los años, meses, días y horas en 0 porque no ha pasado mucho tiempo.
Entonces como hago para que valla mostrando, antes de un minuto que sólo muestre segundos, y cuando llegue al minuto que muestre los minutos y segundos, y así sucesivamente.
Espero que me entiendan, este es mi código completo.

Código PHP:
<?php
date_default_timezone_set
("America/Costa_Rica");
$nombre_archivo "archivo.zip";
if(
file_exists($nombre_archivo))
{
}
?>
<?php
$fecha1 
= new DateTime(date("Y/m/j g:i:s"filectime($nombre_archivo)));
$fecha2 = new DateTime(date("Y-m-j g:i:s"));
$fecha $fecha1->diff($fecha2);
$diferecia "$fecha->y años, $fecha->m meses, $fecha->d dias, $fecha->h horas, $fecha->i minutos, $fecha->s segundos";
echo 
$diferecia;
?>
  #2 (permalink)  
Antiguo 16/12/2013, 08:00
 
Fecha de Ingreso: diciembre-2012
Mensajes: 178
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: Como lo Hago?

yo tengo la misma duda espero alguien pueda ayudar
__________________
clasificados nunca se sabe todo
  #3 (permalink)  
Antiguo 16/12/2013, 08:05
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Como lo Hago?

Pues tienes que hacer varias sentencias if, vamos que no es nada del otro mundo

Edito:

Al ser date_diff una función que devuelve algo como esto:

Código PHP:
Ver original
  1. DateInterval::__set_state(array( 'y' => 0, 'm' => 0, 'd' => 0, 'h' => 17, 'i' => 14, 's' => 14, 'invert' => 1, 'days' => 0, ))

Se debe verificar que todos los valores anteriores al valor que se quiere mostrar sean cero para poder escoger un valor, me explico

Código PHP:
Ver original
  1. if( $fecha->i == 0 && $fecha->h == 0 && $fecha->d == 0 && $fecha->m == 0 && $fecha->y == 0 ){
  2.     $diferecia = "$fecha->s segundos";
  3. } else if( $fecha->h == 0 && $fecha->d == 0 && $fecha->m == 0 && $fecha->y == 0  ){
  4.     $diferecia = "$fecha->i minutos, $fecha->s segundos";
  5. }

Y así sucesivamente

PD: Tener en cuenta los valores devueltos por diff para que os hagaís una idea de los valores que deben de usar para comparar cada intervalo

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Última edición por jonni09lo; 16/12/2013 a las 08:20
  #4 (permalink)  
Antiguo 16/12/2013, 09:09
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
Respuesta: Como lo Hago?

o podrias usar algo como esto.

http://www.9lessons.info/2013/06/jqu...-with-php.html
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #5 (permalink)  
Antiguo 16/12/2013, 10:47
 
Fecha de Ingreso: noviembre-2013
Ubicación: Limon
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Como lo Hago?

jonni09lo, no te pude entender muy bien, no tengo idea de como colocar ese codigo que dices.

xalupeao, voy a ver si me sirve
muchas gracias a los 2 por responder y tratar de ayudarme.
  #6 (permalink)  
Antiguo 17/12/2013, 10:53
 
Fecha de Ingreso: noviembre-2013
Ubicación: Limon
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Como lo Hago?

Estuve probando el codigo que lo que dices de agregar varios if y me quedo asi, pero siempre muestra datos en 0(cero), tambien tengo una pregunta como hago con el valor de años que pongo en else if si ese era el ultimo.

Código PHP:
<?php
date_default_timezone_set
("America/Costa_Rica");
$nombre_archivo "archivo.zip";
if(
file_exists($nombre_archivo))
{
}
?>
<?php
$fecha1 
= new DateTime(date("Y/m/j g:i:s",
filectime($nombre_archivo)));
$fecha2 = new DateTime(date("Y-m-j g:i:s"));
$fecha $fecha1->diff($fecha2);
if( 
$fecha->== && $fecha->== && $fecha->== && $fecha->== && $fecha->== ){
$diferecia "$fecha->s segundos";
} else if( 
$fecha->== && $fecha->== && $fecha->== && $fecha->== 0  ){
$diferecia "$fecha->i minutos, $fecha->s segundos";
}
if( 
$fecha->== && $fecha->== && $fecha->== ){
$diferecia "$fecha->h horas, $fecha->i minutos, $fecha->s segundos";
} else if( 
$fecha->== && $fecha->== 0  ){
$diferecia "$fecha->d dias, $fecha->h horas, $fecha->i minutos, $fecha->s segundos";
}
if( 
$fecha->== ){
$diferecia "$fecha->m meses, $fecha->h horas, $fecha->i minutos, $fecha->s segundos";
} else if( 
$fecha->== 0  ){
$diferecia "$fecha->y, $fecha->m meses, $fecha->d dias, $fecha->h horas, $fecha->i minutos, $fecha->s segundos";
}
echo 
"$diferecia";
?>
  #7 (permalink)  
Antiguo 17/12/2013, 11:19
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Como lo Hago?

Bueno, al ver que lo intentaste te diré lo mas simple:

Código PHP:
Ver original
  1. $fecha1 = new DateTime(date("Y/m/j g:i:s",
  2. filectime($nombre_archivo)));
  3. $fecha2 = new DateTime(date("Y-m-j g:i:s"));
  4. $fecha = $fecha1->diff($fecha2);
  5.  
  6. if( $fecha->i == 0 && $fecha->h == 0 && $fecha->d == 0 && $fecha->m == 0 && $fecha->y == 0 ){
  7.     $diferecia = "$fecha->s segundos";
  8. } else if( $fecha->h == 0 && $fecha->d == 0 && $fecha->m == 0 && $fecha->y == 0  ){
  9.     $diferecia = "$fecha->i minutos, $fecha->s segundos";
  10. } else if( $fecha->d == 0 && $fecha->m == 0 && $fecha->y == 0 ){
  11.     $diferecia = "$fecha->h horas, $fecha->i minutos, $fecha->s segundos";
  12. } else if( $fecha->m == 0 && $fecha->y == 0  ){
  13.     $diferecia = "$fecha->d dias, $fecha->h horas, $fecha->i minutos, $fecha->s segundos";
  14. } else if( $fecha->y == 0 ){
  15.     $diferecia = "$fecha->m meses, $fecha->h horas, $fecha->i minutos, $fecha->s segundos";
  16. } else{
  17.     $diferecia = "$fecha->y, $fecha->m meses, $fecha->d dias, $fecha->h horas, $fecha->i minutos, $fecha->s segundos";
  18. }
  19. echo "$diferecia";

Hazlo así y comentanos si te funciona

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Última edición por jonni09lo; 17/12/2013 a las 11:35
  #8 (permalink)  
Antiguo 17/12/2013, 13:08
 
Fecha de Ingreso: noviembre-2013
Ubicación: Limon
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Como lo Hago?

Ahora sí funcionó, muchas gracias.
Aquí el codigo completo para el otro compañero que tambien lo necesitaba.
Código PHP:
<?php
date_default_timezone_set
("America/Costa_Rica");
$nombre_archivo "temporal.php";
if(
file_exists($nombre_archivo))
{
}
?>
<?php
$fecha1 
= new DateTime(date("Y/m/j g:i:s"
filectime($nombre_archivo))); 
$fecha2 = new DateTime(date("Y-m-j g:i:s")); 
$fecha $fecha1->diff($fecha2); 
 if( 
$fecha->== && $fecha->== && $fecha->== && $fecha->== && $fecha->== ){ 
    
$diferecia "$fecha->s segundos"
} else if( 
$fecha->== && $fecha->== && $fecha->== && $fecha->== 0  ){ 
    
$diferecia "$fecha->i minutos, $fecha->s segundos"
} else if( 
$fecha->== && $fecha->== && $fecha->== ){ 
    
$diferecia "$fecha->h horas, $fecha->i minutos, $fecha->s segundos"
} else if( 
$fecha->== && $fecha->== 0  ){ 
    
$diferecia "$fecha->d dias, $fecha->h horas, $fecha->i minutos, $fecha->s segundos"
} else if( 
$fecha->== ){ 
    
$diferecia "$fecha->m meses, $fecha->h horas, $fecha->i minutos, $fecha->s segundos"
} else{ 
    
$diferecia "$fecha->y, $fecha->m meses, $fecha->d dias, $fecha->h horas, $fecha->i minutos, $fecha->s segundos"

echo 
"$diferecia";
?>

Etiquetas: echo, fecha
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 17:28.