Diferença entre 2 Horas + Evento Ajax + PHP

(Régis Matos) #1

Estou precisando calcular a diferença entre 2 horas

Ex.

{hora_final} igual a 11:20
{hora_inicial} igual a 07:00

{hora_total} tem que ficar 04:20

{hora_total} = {hora_final} - {hora_inicial};

Ou seja, calcular o total de horas gastas…

Alguém conseguiu fazer isso no evento ajax via php?

=========================================================
Já vai uma dica pra NM…

Criar uma macro = sc_date_dif, mais diferença de horas…

Até arisco o nome pra nova macro, sc_hora_dif

(Régis Matos) #2

Olha, achei esse script no Forum mesmo…

Pelo menos resolveu minha situação…

Mais seria interessante se existisse uma macro que fizesse isso…

$entrada = {hora_inicial};
$saida = {hora_final};

$hora1 = explode(":",$entrada);
$hora2 = explode(":",$saida);
$acumulador1 = ($hora1[0] * 3600) + ($hora1[1] * 60) + $hora1[2];
$acumulador2 = ($hora2[0] * 3600) + ($hora2[1] * 60) + $hora2[2];
$resultado = $acumulador2 - $acumulador1;
$hora_ponto = floor($resultado / 3600);
$resultado = $resultado - ($hora_ponto * 3600);
$min_ponto = floor($resultado / 60);
$resultado = $resultado - ($min_ponto * 60);
$secs_ponto = $resultado;

{hora_total} = $hora_ponto.":".$min_ponto.":".$secs_ponto;

(Régis Matos) #3

Precisei totalizar o campo Horas…

Também encontrei dificuldade …

Consegui quebrar um galho com com a função SEC_TO_TIME no select.

SEC_TO_TIME( SUM( TIME_TO_SEC( hora_total ) ) ) AS total_horas

SELECT
projetos_lancamentos.data,
projetos.projeto,
funcionarios.nome,
SEC_TO_TIME( SUM( TIME_TO_SEC( hora_total ) ) ) AS total_horas
FROM
projetos_lancamentos LEFT OUTER JOIN projetos ON projetos_lancamentos.id_projeto = projetos.id_projeto
LEFT OUTER JOIN funcionarios ON projetos_lancamentos.id_funcionario = funcionarios.id_funcionario
Group By
projetos.projeto,
projetos_lancamentos.data,
funcionarios.nome
Order By data