Foros del Web » Programando para Internet » PHP »

sumar dentro de rango de horas

Estas en el tema de sumar dentro de rango de horas en el foro de PHP en Foros del Web. Hola , tengo un problema que se me esta complicando: Quiero hacer una tabla cuya primera columna es de horas: pero quiero hacer un bucle ...
  #1 (permalink)  
Antiguo 09/07/2009, 17:42
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 18 años, 9 meses
Puntos: 9
sumar dentro de rango de horas

Hola , tengo un problema que se me esta complicando:

Quiero hacer una tabla cuya primera columna es de horas: pero quiero hacer un bucle con 2 parametros: hora de inicio y hora de fin. osea si escojo:

horai=10:00
horaf=18:00

quiero que vaya sumando estas fechas de 30 en 30 minutos y se genere tantas filas en la tabla como horas

osea:

fila 1 10:00
fila 2 10:30
fila 3 11:00
fila4 11:30
....
fila18 18:30

lo intentaba separando las horas con minutos pero no tengo mucha idea de como aplicarlo.... espero me puedan ayudar, saludos
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 09/07/2009, 21:52
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 17 años, 5 meses
Puntos: 1517
Respuesta: sumar dentro de rango de horas

Bueno puedes hacerlo asi. Puede que haya una mejor forma de hacerlo

Código PHP:
%
<?php
$hComienzo 
= "10:00";
$hFinal = "18:00";

$hComienzoExplode = explode(":",$hComienzo);
$hFinalExplode = explode(":",$hFinal);

$hComienzoEcuacion = ($hComienzoExplode[1] == "30" ? $hComienzoExplode[0] . ".5" : $hComienzoExplode[0]);
$hFinalEcuacion = ($hFinalExplode[1] == "30" ? $hFinalExplode[0] . ".5" : $hFinalExplode[0]);

$ecuacion = ($hFinalEcuacion - $hComienzoEcuacion) / .5 + 1;
$n = $hComienzoExplode[0];
for(
$i = 1; $i <= $ecuacion; $i++){
    if(
$i == 1){
        echo 
"<div>file $hComienzo</div>";
    }elseif(
$i == $ecuacion){
        echo 
"<div>file $hFinal</div>";
    }else{
        
$m = ($ecuacion % 2 == 0 ? (($i % 2) == 0 ? ++$n . ":00" : $n . ":30") : (($i % 2) == 0 ? $n . ":30" : ++$n . ":00"));
        echo 
"<div>file $m</div>";
    }
}
?>
Nota: Si vez un % arriba es que lo puse para que el codigo puediera leer bien los porciento sino coloca en el codigo & #37;
  #3 (permalink)  
Antiguo 09/07/2009, 22:14
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 18 años, 3 meses
Puntos: 416
Respuesta: sumar dentro de rango de horas

Siempre es mejor trabajar con timestamps:

Código PHP:
<?php

$horaInicio 
= "10:00";
$horaFinal = "18:00";

$arrayInicio = explode(":", $horaInicio);
$arrayFinal = explode(":", $horaFinal);

$timeInicio = mktime($arrayInicio[0], $arrayInicio[1]);
$timeFinal = mktime($arrayFinal[0], $arrayFinal[1]);

while(
$timeInicio <= $timeFinal) {
    echo 
date("H:i", $timeInicio) . "<br />\n";
    
$timeInicio = $timeInicio + (60 * 30);
}

?>
  #4 (permalink)  
Antiguo 09/07/2009, 23:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 17 años, 5 meses
Puntos: 1517
Respuesta: sumar dentro de rango de horas

Besale los pies a Ronruby Es mucho mejor la forma de el jaja
  #5 (permalink)  
Antiguo 10/07/2009, 09:08
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 18 años, 9 meses
Puntos: 9
Respuesta: sumar dentro de rango de horas

muchas gracias ronruby ... ya lo habia echo con la funcion list($hour, $min) y sumando con date('H:i', mktime( $hour, $min + $minuto)); y comparandola con la $fechafinal, pero lo tuyo es mucho mas facil y entendible, gracias!
__________________
Quitenme la vida pero no la bebida.
  #6 (permalink)  
Antiguo 10/07/2009, 10:03
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 18 años, 3 meses
Puntos: 416
Respuesta: sumar dentro de rango de horas

Cita:
Iniciado por abimaelrc Ver Mensaje
Besale los pies a Ronruby Es mucho mejor la forma de el jaja
Si quiere seguir programando que ni lo intente xD
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 23:01.