Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nimaro

[Resolvido] Trabalhar com Time em php

Recommended Posts

Ola a todos,

 

através de um select deste genero:

 

<select id="select_gerar" name="tmp_consultas6">
                  		<option value="0">0</option>
				<option value="00:15:00">15min</option>
				<option value="00:30:00">30min</option>
				<option value="00:45:00">45min</option>
				<option value="01:00:00">60min</option>
				<option value="01:30:00">1h30m</option>
</select><br></td></tr>

Estou a enviar para uma variavel Time() na minha base de dados no mysql.

 

A minha duvida esta se, por exemplo: "00:15:00" representa 15minutos?

E eu futuramente irei fazer incrementações de tempo, algo como: "00:45:00" + "00:30:00". A minha duvida está se isto irá dar "01:15:00" ou "00:75:00".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tá trabalhando hora, existe 75 minutos na hora? Tipo, no formato padrão do horário..

 

o máximo é 24 horas, 60 minutos, 60 segundos...

 

é claro que se você adicionar 30 minutos em 45 minutos a hora será 01:15:00

 

Isso se você tiver trabalhando com funções de tempo... não lembro direito com se faz adição de tempo.. não lembro direito como se soma os horários, mas dê uma pesquisada no google, "somar hora php" irá te retornar vários resultados..

 

lembrando que a função time, não irá te retonar o horário 00:00:00, e sim uns números assim: 151515151

não lembro como é.. mas fazendo o que eu disse, você irá conseguir..

 

flw

 

--------------------------------------------------------

 

To sem nada pra fazer, criei uma função pra você:

 

<?php

function somarMinutos($minutos){
   //Hora atual que você quer somar!
   $time = date("H:i:s");//Hora:Minutos:Segundos 

   $somaHora = strtotime("$time + $minutos minutes");

   $resultado = date("H:i:s",$horaNova);

   return $resultado;

}


if(isset($_POST['tmp_consultas6'])){

echo somarMinutos($_POST['tmp_consultas6']);

}

?>

<select id="select_gerar" name="tmp_consultas6">
                  		<option value="0">0</option>
				<option value="15">15min</option>
				<option value="30">30min</option>
				<option value="45">45min</option>
				<option value="60">60min</option>
				<option value="130">1h30m</option>
</select><br></td></tr>

Nem testei a função, mas acho que tá correta... e veja que eu alterei o valor do select, pq irá somar apenas os minutos, e não precisa fazer aquilo tudo... é mais rápido assim.. do outro jeito ainda iria fazer explode, etc.. depois é só adaptar do jeito que quiser..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha pareceu simples a forma como estavas a dizer, mas eu tentei fazer e nao estou a tirar grandes resultados:

 

Estou a fazer desta forma:

 echo $horaInicial = $dados['hora_comeco'];
 $soma_hora = $horaInicial;
 echo ("||");
 echo $horaIncr = $dados['horas_trabalho'];
 echo ("||");				
 $soma_hora += strtotime($horaIncr);
 echo ("||");
 echo "Soma: " . date ("H:i:s", $soma_hora);

$horaInicial -----> 09:00:00

$horaIncr --------> 02:00:00

echo "Soma: " . date ("H:i:s", $soma_hora); --------> Soma: 02:00:09

:/

 

Conseguem ajudar-me nisto do Time, para conseguir fazer as somas que pretendo?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

de que forma uso o mktime(), consegues dizer? para o meu caso como faria para somar 2 tempos?

 

Amigão tente este exemplo que fiz abaixo:

 

<?php 
$time1 = array('hora'=>'00','min'=>'15','sec'=>'00');
$time2 = array('hora'=>'01','min'=>'30','sec'=>'13');
$soma = date("H:i:s" ,mktime(($time1['hora']+$time2['hora']),($time1['min']+$time2['min']),($time1['sec']+$time2['sec']),0,0,0));
echo $soma;
?>

Espero ter ajudado http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use as funções strtotime e strftime, é a forma mais simples de fazer isso:

 

function time_sum( $hora1 , $hora2 ){
$hora1 = strtotime( $hora1 );
$hora2 = strtotime( $hora2 );

return strftime( '%H:%M:%S' , $hora1 + $hora2 - 1263261600 );
}

var_dump( time_sum( '00:45:00' , '00:30:00' ) ); //01:15:00"
var_dump( time_sum( '10:45:00' , '00:15:00' ) ); //11:00:00
var_dump( time_sum( '23:00:00' , '01:00:00' ) ); //00:00:00
var_dump( time_sum( '00:45:00' , '23:15:00' ) ); //00:00:00

Compartilhar este post


Link para o post
Compartilhar em outros sites

João Batista Neto já consigo ver uma luz ao fundo do tunel :)

 

Mas as contas nao parecem bem :/

 

Olha ve como fiz sff:

 

echo $horaInicial = $dados['hora_comeco'];
echo $horaIncr = $dados['tempo_intervalo'];
echo $hora1 = strtotime( $horaInicial );
echo $hora2 = strtotime( $horaIncr );
echo strftime( '%H:%M:%S' , $hora1 + $hora2 - 1263261600 );

Fiz 1 teste com $hora1 = "09:00:00" e $hora2 = "00:15:00" e ele deu-me "07:15:00"

Fiz a seguir outro so com valor no $hora1 = "09:00:00" e deu-me 07:00:00

Ele esta a reconhecer 09:00:00 como 07:00:00 :/

 

 

Depois fiz uma soma de $hora2 + $hora2, onde $hora2 = "00:45:00" e ele deu-me "23:30:00"...:/

 

O problema estará no valor "1263261600" que colocas-te??? que nao entendi muito bem de onde vem....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem... tive de andar a alterar o valor até encontrar 1 que funcionasse...

encontrei :) -----> 1263254400

 

 

Só espero que seja mesmo isso.

Obrigado mais 1 vez

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se ainda precisar, re-fiz a função e é muito mais simples! Acabei de precisar de uma função dessas... testei e funcionou beleza, é fácil de entender..

 

<?php

function somarMinutos($minutos){
 
   return date("H:i:s", strtotime("+ $minutos minutes"));

}


if(isset($_POST['tmp_consultas6'])){

echo somarMinutos($_POST['tmp_consultas6']);

}

?>

<select id="select_gerar" name="tmp_consultas6">
                  		<option value="0">0</option>
				<option value="15">15min</option>
				<option value="30">30min</option>
				<option value="45">45min</option>
				<option value="60">60min</option>
				<option value="130">1h30m</option>
</select><br></td></tr>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.