-1

estoy intentando sumar horas y minutos que obtengo con un foreach pero no tengo exito

$calculosemana = RegistroEmpleados::whereBetween('dia', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->get();

foreach ($calculosemana as $key ) {
    $horas = $key->sum('horastrabajadas');
}

introducir la descripción de la imagen aquí

Necesito que se sumen el atributo 'horastrabajadas'

introducir la descripción de la imagen aquí

¿Como puedo sumarlos y que me de la suma correcta de las horas?

1
  • 1
    Hola Jeremias, bienvenido, la pregunta/respuesta debe ser autocontenida, esto es que no dependa de imágenes o enlaces, te sugiero que la edites, y la adaptes a los requerimientos del sitio, para que no sea cerrada, y evitar recibir votos negativos( cóigo como texto), Commented hace 2 días

1 respuesta 1

0

Yo pasaría todo a segundos y sumaria. Luego de ser necesario transformo todo al formato HH:mm:ss

Para esto creamos 2 funciones:

  • GetSegundos que a partir de una entrada del tipo HH:mm:ss devuelve los segundos totales
  • FormatSegundos que transforma una cantidad de segundos en HH:mm:ss
function GetSegundos($t)
{
    list($h, $m, $s) = explode(":", $t);
    return $h * 3600 + $m * 60 + $s;
}

function FormatSegundos($segundos)
{
    $horas = floor($segundos / 3600);
    $segundos %= 3600;
    $minutos = floor($segundos / 60);
    $segundos %= 60;
    return $horas.":".str_pad($minutos,2,'0',STR_PAD_LEFT).":".str_pad($segundos,2,'0',STR_PAD_LEFT);
}

$segundos = 0;

foreach ($calculosemana as $key ) {
    $horas = $key["horastrabajadas"];
    $segundos += GetSegundos($horas);
}
echo FormatSegundos(#segundos);

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.