Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error al calcular horas con MinutesBetween (https://www.clubdelphi.com/foros/showthread.php?t=74773)

weke 11-07-2011 10:33:48

Error al calcular horas con MinutesBetween
 
Buenos días,
me pasa algo muy curioso que no se si es por error al hacer el cálculo o es algo interno de delphi.

A partir de 2 horas, calculo la diferencia que hay entre ambas para mostrarlo por pantalla y por norma general lo hace de forma correcta pero en ocasiones no lo hace bien. Una de las horas que he detectado es cuando la hora de inicio es 07:00:00 y la de fin 11:00:00, esto tendría que devolver 4 horas y en realidad me está devolviendo 3.98 horas.

A continuación pongo el código en el que lo calculo por si hubiera algún error u otro modo de calcularlo.

Código Delphi [-]
            minutos := MinutesBetween(HoraInicio, HoraFin);
            horas := StrToFloat(FormatFloat('#0.00', (minutos / 60)));
            ShowMessage('Horas: ' + FloatToStr(horas)); // mostramos las horas de diferencia

Gracias de antemano y un saludo.

ecfisa 11-07-2011 14:29:23

Hola.

Intentalo de este modo:
Código Delphi [-]
  minutos := MinutesBetween(HoraInicio, HoraFin);
  horas := Round(minutos/60);
  ShowMessage('Horas: ' + FloatToStr(horas));

Saludos.

weke 11-07-2011 15:27:09

Buenas tardes,
gracias por la respuesta pero ya lo he solucionado. Al final he restado las 2 horas y a partir de esa hora he calculado las horas y minutos resultantes, necesito mostrar decimales para cuando no sean horas completas.

A continuación pongo el código fuente:

Código Delphi [-]
            DecodeTime((HoraFin - HoraInicio), horas, minutos, segundos, milisegundos);
            minutos_calculados := minutos / 60;
            horas_calculadas := horas;
            horas_calculadas := StrToFloat(FormatFloat('#0.00', (horas_calculadas + minutos_calculados)));

Un saludo.

ContraVeneno 11-07-2011 16:50:48

MinutesBetween te cuenta solo los minutos completos.
MinuteSpan te cuenta los minutos completos y te manda los minutos incompletos como una fracción.

Tal vez podrías intentar con MinuteSpan... o hourspan, monthspan, yearspan, etc, etc.


La franja horaria es GMT +2. Ahora son las 14:12:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi