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: 16 años, 10 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: 15 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 == ? (($i 2) == ? ++$n ":00" $n ":30") : (($i 2) == $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: 16 años, 4 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: 15 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: 16 años, 10 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: 16 años, 4 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 21:38.