Time calculation for PHP + Mysql point

Asked

Viewed 1,824 times

0

I am creating a table for the calculation of working hours of employees, but I am not able to do the calculation to know if the correct amount of hours was worked in the day.

In the database is that way: 1

On the site will be displayed this way: 2

In the last column, in "Worked Hours" I need to put the result of the calculation of Input 1 (Beginning of the day), Output 1 (Lunch), Input 2 (Return of Lunch) and Output 2 (end of day)

I used this select to get all data from the table:

SELECT p.id_ponto, p.tb_user_id_user, p.tb_ponto_mes_id_ponto_mes, p.dia_ponto, p.dt_entrada1, p.dt_saida1, p.dt_entrada2, p.dt_saida2, u.id_user, u.nm_user
FROM tb_ponto p
INNER JOIN tb_user u on u.id_user = p.tb_user_id_user

I’m displaying values like this:

echo '<tr><td>' . $item["nm_user"] . '</td>' . 
'<td>' . $item["dia_ponto"] . '/' . $item["tb_ponto_mes_id_ponto_mes"] . '/2017' . '</td>' .  
'<td>' . $item["dt_entrada1"] . '</td>' . 
'<td>' . $item["dt_saida1"] . '</td>' . 
'<td>' . $item["dt_entrada2"] . '</td>' . 
'<td>' . $item["dt_saida2"] . '</td>' . 
'<td>8 Horas</td></tr>';

How can I calculate this?

1 answer

0


Oops, what you want is the result in hours from these strings. It can be done as follows:

// Faz o cálculo das horas
$total = (strtotime($item['dt_saida1']) - strtotime($item['dt_entrada1'])) + (strtotime($item['dt_saida2']) - strtotime($item['dt_entrada2']));

// Encontra as horas trabalhadas
$hours      = floor($total / 60 / 60);

// Encontra os minutos trabalhados
$minutes    = round(($total - ($hours * 60 * 60)) / 60);

// Formata a hora e minuto para ficar no formato de 2 números, exemplo 00
$hours = str_pad($hours, 2, "0", STR_PAD_LEFT);
$minutes = str_pad($minutes, 2, "0", STR_PAD_LEFT);

// Exibe no formato "hora:minuto"
echo $hours.':'.$minutes;
  • It worked perfectly, thank you! Now, I only have one other question, the display is like this: 8:0, it is possible to do it like this: 8:00 or 8:00?

  • There is, I made a change to the code. Look there.

  • Everything perfect, thank you very much!

  • For nothing hehe. :)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.