Ir para conteúdo
Fórum Script Brasil
  • 0

Calcular Horas


alexandremanowar

Pergunta

E aí pessoal beleza

Estou tentando fazer um calculo de horas aqui e esta meio complicado, já fiz alguns tipos de cálculos mas esse esta me quabrando o coco, já calculei datas e horas das seguintes formas:

$data = date("Y-m-d");
$hora = date("H:i:s");
echo date("H:i:s d/m/Y", strtotime("$data $hora +12 hour"));

$data = date("Y-m-d");
$hora = date("H:i:s");
echo date("H:i:s d/m/Y", strtotime("$data $hora +1 year"));

$data = date("Y-m-d");
$hora = date("H:i:s");
echo date("H:i:s d/m/Y", strtotime("$data $hora +12 day"));
E assim vai, mas o que eu preciso fazer agora é o seguinte existe uma data e hora de incio tipo
$data_inicio = "2007-03-27";
$hora_inicio = "12:00:00";

$data_fim = "2007-03-31";
$hora_fim = "14:30:00";

Eu preciso pegar esse período e chegar em dois resultados:

1) qual o total desse período em horas? Nesse caso seria 98:30 horas

2) qual o total desse período em horas e dia? nessa caso o resultado seria 4 dias e 2:30:00

Já tentei várias lógicas e não consegui.

Alguém sabe como fazer isso?

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Cara eu li essa sua função mas não esta funcionando, porpem eu também não estou entendo como ela funciona. Eu tentei fazer de outras formas dei mais uma procurada no php.net, mas até agora não consegui resolver o problema.

Alguém tem um modo diferente de fazer isso?

Link para o comentário
Compartilhar em outros sites

  • 0

E aí pessoal beleza

Lendo os links que vocês deixaram e olhando o php.net e com o conselho de um amigo estou tentando usar a a função strtotime, o que eu preciso conseguir agora é tratar o resultado para ele ficar em horas, olha um dos teste que realizei:

levando por base esse código:

$date = strtotime("10/23/2007 10:00");
$dateTo = strtotime("10/31/2007 12:00");

$teste = $dateTo - $date; // aqui voce já tem o intervalo, agora é tratar !
echo "$teste";
A variável teste fica com esse valor: 698400, logo acredito eu que esse número seja segundos então estou tentando tratar da seguinte forma:
$date = strtotime("10/23/2007 10:00");
$dateTo = strtotime("10/31/2007 12:00");

$teste = $dateTo - $date; // aqui voce já tem o intervalo, agora é tratar !
$teste = $teste/60/24;
echo "$teste";

porém ele me deu 485 o que esta errado pois o valor deveria ser 194, eu estou entendo errado ou estou tratando errado? Fiz outras modos mas os resultados foram piores. Você poderia me explicar?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi cara eu estava fazendo pelas horas e no caso é pelos segundos, mas eu tenho outra dúvida, nesse caso eu tenho as horas inteiras e se eu tiver as horas quebradas, tipo dessa forma:

$date = strtotime("10/23/2007 10:12");
$dateTo = strtotime("10/31/2007 12:36");

$teste = $dateTo - $date; // aqui voce já tem o intervalo, agora é tratar !
$teste = $teste/60/60; //ou $teste = $teste/3600
echo "$teste";

ele vai dar o seguinte resultado:

194.4

Como eu faço para ficar as horas e os minutos no formato 99:99 ?

nesse caso o resultado certo seria 194:24

Link para o comentário
Compartilhar em outros sites

  • 0

Cara valeu pela força.

Mas encomodando mais um pouco acho que não entendo a regra de três que você mencionou rssr soui meio lerdo, por exemplo eu peguei o que esta depois da vírgula dessa forma:

$minutos = explode(".",$teste);
$minutos = $minutos[1];

Assim eu tenho o que esta depois do ponto mas não consegui transformar isso nos minutos que no caso seriam 24 minutos o resultado

Link para o comentário
Compartilhar em outros sites

  • 0

Regra de três, se uma hora de 60 minutos 0.horas vai ter X minutos... veja que o que vem depois do ponto terá que ter o 0. adicionado na frente... ou seja:

$minutos = "0.".$minutos[1];
$minutos_final = $minutos*60;

Claro que isso, se o número após a vírgula tiver mais de uma casa, também vai trazer resultados quebrados, mas dai você usa round, ceil ou floor de acordo com o que achar mais conveniente...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...