Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] resolucion diferencia entre fechas

Estas en el tema de resolucion diferencia entre fechas en el foro de PHP en Foros del Web. Hola, estoy buscando como hacer para que en una foto que haya subido hace 4 meses me muestre en el pie de la foto: "hace ...
  #1 (permalink)  
Antiguo 19/03/2014, 18:28
Avatar de warywin  
Fecha de Ingreso: octubre-2013
Mensajes: 155
Antigüedad: 10 años, 6 meses
Puntos: 1
resolucion diferencia entre fechas

Hola, estoy buscando como hacer para que en una foto que haya subido hace 4 meses me muestre en el pie de la foto: "hace 4 meses" si son horas:"hace 3 horas" , dias....
Pues bien en mi bd tengo un campo llamado fecha 'TIMESTAMP','CURRENT_DATE' que al subir la foto se pone automatica la fecha de subida. Esta me muestra todo, fecha y hora , y con :
Código SQL:
Ver original
  1. SELECT DATEDIFF(NOW(), fecha) AS diasTranscurridos FROM fotos

1-nose si saca diferencia teniendo en cuenta la hora tambien
2-deberia hacer un par de IF para mostrar si son 'hace 4 DIAS' o 'hace 2 MESES' ...horas etc?

gracias
  #2 (permalink)  
Antiguo 19/03/2014, 18:57
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: resolucion diferencia entre fechas

Esto no se cosa de php y por otro lado si usas una función, lee en la correspondiente documentación que hace:

http://dev.mysql.com/doc/refman/5.5/...ction_datediff

DATE_DIFF no toma en cuenta la hora en los cálculos.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 20/03/2014, 05:02
Avatar de warywin  
Fecha de Ingreso: octubre-2013
Mensajes: 155
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: resolucion diferencia entre fechas

Aqui esta la solucion para qien le sirva:
Código PHP:
Ver original
  1. function interval_date($init,$finish)
  2. {
  3.     //formateamos las fechas a segundos tipo 1374998435
  4.     $diferencia = strtotime($finish) - strtotime($init);
  5.  
  6.     //comprobamos el tiempo que ha pasado en segundos entre las dos fechas
  7.     //floor devuelve el número entero anterior, si es 5.7 devuelve 5
  8.     if($diferencia < 60){
  9.         $tiempo = "Hace " . floor($diferencia) . " segundos";
  10.     }else if($diferencia > 60 && $diferencia < 3600){
  11.         $tiempo = "Hace " . floor($diferencia/60) . " minutos'";
  12.     }else if($diferencia > 3600 && $diferencia < 86400){
  13.         $tiempo = "Hace " . floor($diferencia/3600) . " horas";
  14.     }else if($diferencia > 86400 && $diferencia < 2592000){
  15.         $tiempo = "Hace " . floor($diferencia/86400) . " días";
  16.     }else if($diferencia > 2592000 && $diferencia < 31104000){
  17.         $tiempo = "Hace " . floor($diferencia/2592000) . " meses";
  18.     }else if($diferencia > 31104000){
  19.         $tiempo = "Hace " . floor($diferencia/31104000) . " años";
  20.     }else{
  21.         $tiempo = "Error";
  22.     }
  23.     return $tiempo;
  24. }
Las fechas las cojo mediante consulta a la BD y la actual del servidor!
Código SQL:
Ver original
  1. mysql_query("SELECT* FROM fotos WHERE id=$id")
Código PHP:
Ver original
  1. $fechafin = date ("y-m-d h:i:s");

Última edición por warywin; 20/03/2014 a las 05:33
  #4 (permalink)  
Antiguo 20/03/2014, 11:15
Avatar de warywin  
Fecha de Ingreso: octubre-2013
Mensajes: 155
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: resolucion diferencia entre fechas

El problema que hay esque hay como una diferencia de X horas con la hora actual del servidor y la del registro y por eso hay confusiones, esdfecir si lo subi hace 15 horas me pone que hace 4 horas.. o si recien subida, me pone -34800 segundos ayuda pliz. Lo que estoy intentando hacer es sumarle 13 horas a la hora del servidor, que es la diferencia que sde llevan
Código PHP:
Ver original
  1. $diferencia = strtotime('+13 hour',strtotime($finish)) - strtotime($init);

Última edición por warywin; 20/03/2014 a las 13:08
  #5 (permalink)  
Antiguo 20/03/2014, 14:25
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: resolucion diferencia entre fechas

Cita:
Iniciado por warywin Ver Mensaje
El problema que hay esque hay como una diferencia de X horas con la hora actual del servidor y la del registro y por eso hay confusiones, esdfecir si lo subi hace 15 horas me pone que hace 4 horas.. o si recien subida, me pone -34800 segundos ayuda pliz. Lo que estoy intentando hacer es sumarle 13 horas a la hora del servidor, que es la diferencia que sde llevan
Código PHP:
Ver original
  1. $diferencia = strtotime('+13 hour',strtotime($finish)) - strtotime($init);
creo que esto te puede ayuadar en los calculos: http://www.php.net/manual/en/functio...mezone-set.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 20/03/2014, 15:00
Avatar de warywin  
Fecha de Ingreso: octubre-2013
Mensajes: 155
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: resolucion diferencia entre fechas

hice eso, puse:
Código PHP:
Ver original
  1. date_default_timezone_set('Europe/Madrid');
y luego borraba lo de +13hours que puse y me seguia dando en negativo no era la hora correcta :(

Etiquetas: diferencia, fecha, select
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 09:03.