Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde
Eu tenho uma função que faz soma de horas, ela esta somando normalmente, porém preciso fazer um seguência de somas e não sei como fazer, acredito que tenho que usar um for para isso mas não sei como a ideía é a seguinte, tenho uma hora inicial por exemplo 10:00 e uma hora final: 23:00, e tenho um intervalo de 00:30 a idéia é a seguinte quero exibir na tela a adição de intervalo iniciando pela hora inicial até a hora final, ficaria assim o resultado:
10:00 - 10:30 - 11:00 -11:30 - 12:00 - 12:30 ..... 22:00 - 22:30 - 23:00
A minha class soma horas normalmente:
include "calcula_horas.php";
$somaHoras = new CalcularHoras;
$horasFinalIntervalo = $somaHoras->SomaHoras("10:00:00","00:30:00");
echo "$horasFinalIntervalo";
O resultado é 10:30:00
Meu único problema é como fazer um for para fazer essa soma até o horário final?
Olá....bom dia alexandremanowar, beleza...
Bom...acho que posso resolver isso pra você ("eu acho...rsss")...vou criar um script aki...daí mais tarde (tipo...depois do almoço)posto aki pra você beleza...caso eu não conseguir...volto mesmo assim e te falo ok...
Abraços e até lá...
Pessoal agradeço a todos pela ajuda, voiu experimentar o exemplo que o Holt deixou e posto aqui.
Roberto agradeço a ajuda e aguardo a o seu exemplo, obrigado mesmo
Tens que dar as modificadas ainda... para somar as horas e coisas...
Faz ao teu estilo só mostrei como começar...
Tente trabalhar com as funções de strtotime e strftime
A função strtotime converte uma string que representa uma hora (data e hora) no número de segundos passados desde Janeiro de 1970 (Unix Timestamp)
A função strftime converte o Unix Timestamp de volta em uma string que representa uma hora.
Com o número de segundos você faz uma soma normal, por exemplo, para somar 30 minutos você soma 1800 segundos, veja:
$inicio = strtotime( '10:00' );
$final = strtotime( '23:00' );
$horas = array();
$current = $inicio;
do {
$horas[] = strftime( '%H:%M' , $current );
$current += 1800;
} while ( $current <= $final );
echo implode( PHP_EOL , $horas );
A saída será:
>
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
22:00
22:30
23:00
Haa eu fiz assim:
<?php
$horas = 10;
$minuto = 30;
$y = 1;
for($x = 10; $x < 36; $x++)
{
if($y == 1)
{
echo date("10:00")."<br>";
}
$foo = mktime($horas, $int + $minuto, 0, 0, 0, 0);
$all = strftime("%H:%M", $foo)."<br>";
$int = strftime("%M", $foo);
if ($int + $minuto == 30)
{
$horas = $horas + 1;
}
echo $all;
$y++;
}
?>Pessoal valeu pela ajuda
Fiz um tipo de gambi aqui porque esse tipo de coisas com horas é embaçado, mas rolou:
While($para == 0)
{
if(strtotime("$horaFinal")>strtotime("$horasFinalIntervalo"))
{
$horasFinalIntervalo = $somaHoras->SomaHoras($horasFinalIntervalo,$horaIntervalo);
echo "$horasFinalIntervalo <br />";
}
else
{
$para = 1;
}
}
Valeu a todos pela ajuda e estou pegando o que vocês montaram e tentar fazer algo mais prof srsr porque esse que fiz ta ruim srsrs.
Se alguém tiver mais idéias é bem vinda
É...dizem que...se ficar esperando com fome o gato vem e come não é mesmo...rsss
Tinha dito ao alexandremanowar que ia fazer para ele...porém...antes de começar entrei aki novamente e...vejo que...a dica do João Batista Nerto seria o que eu tinha em mente...então...já não é mais preciso.
Bom...o que importa é que você resolveu seu problema beleza...
Um grade abraço à todos...
do{
}while($a[1]<=60)
Ficou meio feio mas eh chato trabalhar com horas ;S