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

Subtração De Horas Minutos E Segundos


heltonritter

Pergunta

seguinte preciso de uma variável que me retorne quantas horas, minutos e segundos

mas o que tenho me retorna "4".

e aí, alguém sabe como subtrair?

<?php

$dataf=("11:40:00");

$dini=("7:30:00");

$result=($dataf-$dini);

echo ($result);

?>

Deve ser algo fácil..mas não estou conseguindo..

Obrigado..

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Guest Thiago Loli

Kara uma sugestão.... Eu Desenvolvi esse código...... tava com esse tipo de problema... leia ele e ve o que entende... qualquer coisa posta a sua duvida....

// isso aqui busquei no banco de dados....

$horaacesso = mysql_result($horarios,0,"horaAcesso");

$horasaida = mysql_result($horarios,0,"horaSaida");

list($horas_acesso,$minutos_acesso,$segundos_acesso) = explode(":", $horaacesso);

$horas_acesso1 = $horas_acesso * 3600;

$minutos_acesso1 = $minutos_acesso * 60;

$total_acesso = $horas_acesso1 + $minutos_acesso1 + $segundos_acesso;

list($horas_saida,$minutos_saida,$segundos_saida) = explode(":", $horasaida);

$horas_saida1 = $horas_saida * 3600;

$minutos_saida1 = $minutos_saida * 60;

$total_saida = $horas_saida1 + $minutos_saida1 + $segundos_saida;

$total = ($total_saida - $total_acesso);

$time = ($total/3600);

list($horas) = explode(".", $time);

$resto_segundos = ($total % 3600);// resto da divisao por 3600

$c = ($resto_segundos/60);

list($minutos) = explode(".", $c);

$segundos = ($total % 60);

$permanencia = $horas.":".$minutos.":".$segundos;

Te mais..... :)

Link para o comentário
Compartilhar em outros sites

  • 0

essa é a lógica que eu iria iniciar a desenvolver, postei para ver se o php mesmo não tinha algo mais pronto do tipo,

obriga a variável 1 e 2 ser do tipo time

faz um menos a outra e o php se encarega das conversões de minutos segundo...

Andei lendo outras coisas no phpbrasil, no imasters e tal e o jeito é mesmo implementar a lógica..

Esse post anterior é 80% do caminho andado.

OBRIGADO!!

Link para o comentário
Compartilhar em outros sites

  • 0

bom vou tentar fazer uma coisa mais mastigada para você

function SubtrairTemp($tmpFinal, $tmpInicial){ //Calcular Final - Inicial, formato HH:NN:SS
  $tmpFinal = explode(":", $tmpFinal);
  $ss_fn = ($tmpFinal[0] * 3600) + ($tmpFinal[1] * 60) + ($tmpFinal[2]);

  $tmpInicial = explode(":", $tmpInicial);
  $ss_in = ($tmpInicial[0] * 3600) + ($tmpInicial[1] * 60) + ($tmpInicial[2]);

  $ss_rs = $ss_fn - $ss_in;

  // Agora formata novamente a data ...

  $nn_rs = 0;
  $hr_rs = 0;

  while($ss_rs > 59){
    $ss_rs = $ss_rs - 60;
    $nn_rs = $nn_rs + 1;
    if($nn_rs>=60){
      $nn_rs = 0;
      $hr_rs = $hr_rs + 1;
    }
  }
  return $hr_rs . ":" . $nn_rs . ":" . $ss_rs
}

na verdade fuii fazendo aqui nem testei, mas axo q ta certo

Link para o comentário
Compartilhar em outros sites

  • 0

Olá amigo!

PHP faz isso!

São as funções strtotime(), mktime() e date().

Por exemplo:

Suponhamos as seguintes datas/horas vindas de uma base de dados MySQL:

data_login -> 2009-12-15 12:00:10

data_logout -> 2009-12-15 13:30:00

Para sabermos o tempo que o usuário permaneceu conectado então, deveriamos subtrair a hora de "data_login" da hora de "data_logout".

O código ficaria dessa forma...

<?php
     $data_login = strtotime('2009-12-15 12:00:10');
     $data_logout = strtotime('2009-12-15 13:30:00');

     $tempo_con = mktime(date('H', $data_logout) - date('H', $data_login), date('i', $data_logout) - date('i', $data_login), date('s', $data_logout) - date('s', $data_login));

     print date('H:i:s', $tempo_con);
?>

Onde o resultado exibido na tela será exatamente 01:29:50.

Abraços!

:rolleyes:

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...