Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/08/2003, 11:59
leonardop
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola Pino,

Bueno, me intriga un poco que los números que das en el ejemplo no son consistentes unos con otros. Por ejemplo, los resultados que produce el código presentado más adelante con las cifras que das al comienzo de tu mensaje son:

Cita:
Horas: 3
Minutos: 202
Segundos: 178
Quizás te he malinterpretado y es otro tipo de cálculo el que produce el resultado "Horas: 3, Minutos 160, Segundos: 120". O quizás haya sido sólo un despiste, no lo sé. :)

En fin, esta es la solución que se me ha ocurrido en principo para el problema que enuncias:

Código:
<?php

$archivo = 'internet.txt';  // Nombre del archivo con los datos

$horas = $minutos = $segundos = 0;

$abrir = fopen ($archivo, 'r');

if (! $abrir) {
    echo "Error al abrir archivo de entrada.\n";
    exit (1);
}

while (! feof ($abrir)) {
    $linea = trim (fgets ($abrir));

    list ($no_usado, $h, $m, $s) = explode (':', $linea);

    $horas    += $h;
    $minutos  += $m;
    $segundos += $s;
}

fclose ($abrir);

echo<<<FIN_RESULTADOS
Horas: $horas<br />
Minutos: $minutos<br />
Segundos: $segundos<br />
<hr />
FIN_RESULTADOS;

?>

Este pequeño ejemplo calcula las sumas totales de las columnas del archivo fuente. Se me ocurre que quizás resulte útil si en lugar de hacer sumas totales de horas, minutos y segundos, estos tres valores son usados para calcular un resultado más legible. Por ejemplo, si el resultado total fuera: 2 horas, 70 minutos, 80 segundos; este valor podría resultar más claro en la forma de: 3 horas, 11 minutos, 20 segundos.

En tal caso, podrían agregarse las siguientes líneas después del ciclo `while' del ejemplo inicial:

Código:
$horas    += floor (($minutos + floor ($segundos / 60)) / 60);
$minutos   = ($minutos + floor ($segundos / 60)) % 60;
$segundos %= 60;
En este caso, por ejemplo, el resultado del que hablé el comienzo se tranformaría en:

Cita:
Horas: 6
Minutos: 24
Segundos: 58
Si te he malinterpretado, y buscas otro tipo de solución, por favor déjame saber. :)

Un cordial saludo