Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, pessoal!
Tenho um formulário em PHP que eu faço cadastro de Ordem de Serviço. Porém, hoje, o cadastro eu colocar as seguintes informações:
hora inicial (HH:MM)
hora final (HH:MM)
intervalo (HH:MM)
hora total (HH:MM)
(todos no mesmo formato e com máscara, ou seja, não existe como digitar algo diferente que [0-9][0-9]:[0-9][0-9]
tem mais coisa, mas não cabe a dúvida.
Hoje o funcionário aponta essas informações manualmente, porém gostaria que a informação hora total fosse calculada automática, exemplo:
hora inicial: 08:00
hora final: 18:00
intervalo: 01:30
hora total = final - inicial - intervalo = 08:30
compreenderam? estou com dificuldade para fazer, achei exemplo usando MKTIME e strtotime, porém somente vi exemplo e explicações quando o camarada coloca um horário e colocar o quando vai somar/subtrair, no meu caso eu estou apontando 3 horários e quero a diferença entre eles.
Agradeço desde já a atenção de todos!!!
Não entendi muito bem, mas seria isso?
$final = strftime("%H:%M", strtotime($final));
$inicial = strftime("%H:%M", strtotime($inicial));
$invervalo = strftime("%H:%M", strtotime($intervalo));
%total = $final - $inicial - $intervalo;
echo date('H:i',%total);Você não precisa usar o strftime, somente o strtotime;
$inicial = '08:00';
$inicial = strtotime($inicial);Entendi, até consegui fazer a conta, mas como mostrar a variável total em formata H:m?
olha como ficou:
$inicial = '08:00';
$final = '18:00';
$intervalo = '01:00';
$inicial = strtotime($inicial);
$final = strtotime($final);
$intervalo = strtotime($intervalo);
$total = $final - $intervalo - $inicial;
echo strftime("%H:%M", $total); (resultado = 03:00, mas deveria ser 09:00)
estou testando nesta página com valores fixos: valterleonardo.com.br/calculartempoos.php
Eu testei esse seu código aqui e mostro como resultado 09:00.
Você pode colocar 2 horários para subtrair, use o strtotime nos 3 horários e faça como você colocou:
hora total = final - inicial - intervalo;
E depois use o:
date('H:i:s',$horaTotal);