Foros del Web » Programando para Internet » PHP »

Trabajar con horas php

Estas en el tema de Trabajar con horas php en el foro de PHP en Foros del Web. Buenas estoy buscando una funcion que me saque la hora de una base de datos y la compare con la actual y diga hace x ...
  #1 (permalink)  
Antiguo 01/03/2012, 08:10
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Trabajar con horas php

Buenas estoy buscando una funcion que me saque la hora de una base de datos y la compare con la actual y diga hace x horas, hace x segundos, o x semanas, x meses, es decir tipo facebook y tuenti, e encontrado una en una web pero nose que es este valor que le pasa ni como hacerlo con mi base de dato, el campo esta en varchar y la fecha la meto con este codigo: $date_default_timezone_set = date_default_timezone_set('Europe/Madrid');
$fecha= date('H:i:s d-n-o',strtotime('+0hours'));
Y esta es la funcion:
Código PHP:
Ver original
  1. function hace($fecha_unix){
  2.         //obtener la hora en formato unix
  3.         $ahora=time();
  4.        
  5.         //obtener la diferencia de segundos
  6.         $segundos=$ahora-$fecha_unix;
  7.        
  8.         //dias es la division de n segs entre 86400 segundos que representa un dia;
  9.         $dias=floor($segundos/86400);
  10.  
  11.         //mod_hora es el sobrante, en horas, de la division de días;    
  12.         $mod_hora=$segundos%86400;
  13.        
  14.         //hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
  15.         $horas=floor($mod_hora/3600);
  16.        
  17.         //mod_minuto es el sobrante, en minutos, de la division de horas;      
  18.         $mod_minuto=$mod_hora%3600;
  19.        
  20.         //minuto es la division entre el sobrante y 60 segundos que representa un minuto;
  21.         $minutos=floor($mod_minuto/60);
  22.        
  23.         if($horas<=0){
  24.                 echo $minutos.' minutos';
  25.         }elseif($dias<=0){
  26.                 echo $horas.' horas '.$minutos.' minutos';
  27.         }else{
  28.                 echo $dias.' dias '.$horas.' horas '.$minutos.' minutos';
  29.         }
  30. }
no se que es lo que se pone en la function hace(aki) y nose como poner el valor de mi base de datos seria una variable tipo $tiempo sacada de la base, me podeis echar una mano?? gracias un saludo.
  #2 (permalink)  
Antiguo 01/03/2012, 09:12
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Trabajar con horas php

$fecha_unix, es la fecha en formato Unix.

"el número de segundos desde la Época Unix (1 de Enero de 1970 00:00:00 GMT)"

Puedes obtener esta fecha con time(), o si ya tienes una fecha, convertirla a formato unix con mktime().

http://es.php.net/manual/es/function.mktime.php
__________________
----
http://www.mascodigo.com
  #3 (permalink)  
Antiguo 01/03/2012, 14:57
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Trabajar con horas php

Para que sirve el formato Unix nunca lo use ni escuche? ya leí y creo que entendi como se ace con el manual pero nose para que sirve ese formato, me pueden explicar?? gracias un saludo.
  #4 (permalink)  
Antiguo 02/03/2012, 04:32
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Trabajar con horas php

He echo lo del mktime() y lo e puesto en mi funcion y me da este error:
Warning: Missing argument 1 for hace(), called in C:\AppServ\www\proyecto\10\4\index.php on line 41 and defined in C:\AppServ\www\proyecto\10\4\index.php on line 11
tengo este codigo:
Código PHP:
Ver original
  1. <?php
  2. include('config.php');
  3. date_default_timezone_set('Europe/Madrid');
  4. $horas=mysql_query("SELECT * from perfil",$conexion);
  5. $fechas=(mysql_fetch_array($horas));
  6. $fecha=$fechas['fecha'];
  7. $fechas1=mktime($fecha);
  8. $ahora=time();
  9. /*echo $fechas1."<br>";
  10. echo $ahora;*/
  11. function hace($fechas1){
  12.         //obtener la hora en formato unix
  13.         $ahora=time();
  14.        
  15.         //obtener la diferencia de segundos
  16.         $segundos=$ahora-$fechas1;
  17.        
  18.         //dias es la division de n segs entre 86400 segundos que representa un dia;
  19.         $dias=floor($segundos/86400);
  20.  
  21.         //mod_hora es el sobrante, en horas, de la division de días;    
  22.         $mod_hora=$segundos%86400;
  23.        
  24.         //hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
  25.         $horas=floor($mod_hora/3600);
  26.        
  27.         //mod_minuto es el sobrante, en minutos, de la division de horas;      
  28.         $mod_minuto=$mod_hora%3600;
  29.        
  30.         //minuto es la division entre el sobrante y 60 segundos que representa un minuto;
  31.         $minutos=floor($mod_minuto/60);
  32.        
  33.         if($horas<=0){
  34.                 echo $minutos.' minutos';
  35.         }elseif($dias<=0){
  36.                 echo $horas.' horas '.$minutos.' minutos';
  37.         }else{
  38.                 echo $dias.' dias '.$horas.' horas '.$minutos.' minutos';
  39.         }
  40. }
  41. echo hace();
  42. ?>
Nose donde fallo ya que la fecha de la base de datos es 14:59:06 28-2-2012 y la saco en formato unix con mktime($variable), nose en que fallo pero no me compara con ahora y me dice que desde esa fecha hasta ahora hay: 15401 dias 10 horas 17 minutos, si alguien sabe en que fallo o como hacerlo y me quiere ayudar estaría agradecido, un saludo.
  #5 (permalink)  
Antiguo 02/03/2012, 08:35
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Trabajar con horas php

Tengo otra duda si pongo l en date me da el dia que es hoy en letras pero sale en ingles hay alguna forma de que salga en español??? gracias un saludo.
  #6 (permalink)  
Antiguo 02/03/2012, 15:07
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Trabajar con horas php

No encuentro la manera de poner el dia en español hay alguna manera de hacer esto??? gracias.
  #7 (permalink)  
Antiguo 02/03/2012, 16:24
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Trabajar con horas php

he encontrado esto por google pero no me sirve ya que mi fecha esta en la base de datos y quiero sacarla de hay como lo puedo hacer?? $diasemana=date(N); se supone que la n el dia de la semana el valor del array que lo devuelve no es asi?? pero nose como aplicarlo a mi base de datos, alguien me puede dar una idea??? gracias.
  #8 (permalink)  
Antiguo 28/04/2012, 04:36
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Trabajar con horas php

Buenas
despues de un mes y pico me surge otro problema con las dichosas horas y dias...
tengo las horas ya bien en funcionamiento pero nose como puedo sacar si es el mismo dia o si fue ayer cuando lo registraron es decir que salga hoy y la hora, y si fue ayer igual, claro cual es mi duda:
yo tengo q lo registre el 27-04-2012 facil lo comparo con hoy que es 28-04-2012 y ya se que no es igual, pero como se si hace un dia q se puso o ace mas??? como podria acer esto?? necesito vuestra ayuda. gracias.

Etiquetas: horas, variables
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 11:18.