Foros del Web » Programando para Internet » PHP »

redondear horas

Estas en el tema de redondear horas en el foro de PHP en Foros del Web. como puedo redondear una hora a la unidad por ejemplo si es 8:45 que redondee a 9:00 tengo esta funcion Código PHP:    function  restaHoras ...
  #1 (permalink)  
Antiguo 16/06/2012, 10:19
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
redondear horas

como puedo redondear una hora a la unidad

por ejemplo si es 8:45 que redondee a 9:00


tengo esta funcion

Código PHP:
  function restaHoras($horaIni$horaFin){
        return (
date("H:i:s"strtotime("00:00:00") + strtotime($horaFin) - strtotime($horaIni) ));

  #2 (permalink)  
Antiguo 16/06/2012, 10:37
 
Fecha de Ingreso: marzo-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: redondear horas

Cita:
Iniciado por dante14 Ver Mensaje
como puedo redondear una hora a la unidad

por ejemplo si es 8:45 que redondee a 9:00


tengo esta funcion

Código PHP:
  function restaHoras($horaIni$horaFin){
        return (
date("H:i:s"strtotime("00:00:00") + strtotime($horaFin) - strtotime($horaIni) ));

No se si quieres redondear la salida o la entrada...

Este ejemplo es para redondear la entrada de $horaIni, si los minutos son superiores a 30, añade +1 hora y los minutos a 0 (habría que tratar también los segundos).

Código PHP:
function restaHoras($horaIni$horaFin){ 
    list(
$h,$m,$s) = explode(":",$horaIni);
    if(
$m 30) {
        
$m 0;
        
$h += 1
    } else {
        
$m 0;
    }
    
$horaIni "$h:$m:$s";
    return (
date("H:i:s"strtotime("00:00:00") + strtotime($horaFin) - strtotime($horaIni) )); 

Si lo que quieres redondear es la salida, seria lo mismo, simplemente guardas en una variable el return y haces explode ;)

Espero que te sirva, saludos
  #3 (permalink)  
Antiguo 16/06/2012, 10:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: redondear horas

Lo que deseo redondear es lo que me devuelve
  #4 (permalink)  
Antiguo 16/06/2012, 11:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 9
Respuesta: redondear horas

Cita:
Iniciado por dante14 Ver Mensaje
Lo que deseo redondear es lo que me devuelve
Código PHP:
function restaHoras($horaIni$horaFin){  
  
    
$hora = (date("H:i:s"strtotime("00:00:00") + strtotime($horaFin) - strtotime($horaIni) ));  
      list(
$h,$m,$s) = explode(":",$hora); 
   if(
$s 30) {
       
$m += 1;
       
$s 0;
    } else {
       
$s 0;
    }
    if(
$m 30) { 
        
$m 0
        
$h += 1;     
    } else { 
        
$m 0
    } 
    return 
"$h:$m:s";

A partir de esto te tienes que currar un poco el código, porque que pasa cuando la hora sea las 12 (24h) y le toque redondear, te pondrá que son las 13 horas en modo am/pm (25h en modo 24h).
  #5 (permalink)  
Antiguo 16/06/2012, 12:02
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: redondear horas

Deberías hacer algo así ( no estoy seguro que funcione bien )

Código PHP:
Ver original
  1. $fecha_int = time();
  2. $nit = ceil($fecha_int/1800)*1800;
  3.  
  4. echo date("Y-m-d H:i:s", $nit);

1800 son 30 minutos en segundos

ceil para redondear para arriba

floor para redondear para abajo
  #6 (permalink)  
Antiguo 19/07/2013, 14:47
 
Fecha de Ingreso: julio-2013
Ubicación: Cuernavaca
Mensajes: 1
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: redondear horas

Hola, yo hice esta función, espero que te sea de utilidad

Código PHP:
Ver original
  1. function redondear_hora($hora){
  2.     $sep = explode(':', $hora);
  3.     $minutos=$sep[1];
  4.     $hora=$sep[0];
  5.     if($minutos>30){
  6.         $hora=$hora+1;
  7.     }
  8.     return $hora;
  9. }
  #7 (permalink)  
Antiguo 19/07/2013, 14:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: redondear horas

Cita:
Iniciado por Intrabits Ver Mensaje
Hola, yo hice esta función, espero que te sea de utilidad

Código PHP:
Ver original
  1. function redondear_hora($hora){
  2.     $sep = explode(':', $hora);
  3.     $minutos=$sep[1];
  4.     $hora=$sep[0];
  5.     if($minutos>30){
  6.         $hora=$hora+1;
  7.     }
  8.     return $hora;  // sin minutos
  9. }
No esta mal pero te olvidastes los minutos, la ultima linea seria asi:

Código PHP:
 return "$hora:00"
__________________
Salu2!

Etiquetas: horas, redondear
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:00.