Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   cambiar la hora sin am/pm?? (https://www.clubdelphi.com/foros/showthread.php?t=50297)

ale_metall 14-11-2007 06:15:03

cambiar la hora sin am/pm??
 
Amigos.. necesito saber si existe alguna forma desde codigo delphi, para cambiar el formato de hora del sistema, es decir el programa calcula diferencias entre horas en l formato 00:00:00; 23:59:59 y quiero q se configure asi la hora del sistema y no que aparezca con am, pm! porq sino realiza mal los calculos..

o si no alguna mascara para convertir la hora del sistema, como este, al formato en el q yo lo necesito.. no se si me explique bien!

saludos y gracias... trabajo con delphi 6

dec 14-11-2007 07:51:56

Hola,

Hay que ver cómo estás tratando de realizar los cálculos. Y cómo consigues la hora del sistema. En principio, como comprenderás, no debería ser preciso cambiar la hora del sistema para realizar lo que te fuera menester en tu aplicación. ¿Por qué no enseñas parte de tu código, al menos? ¿Conoces la unidad "DateUtils" de Delphi?

ale_metall 16-11-2007 12:52:43

Simplemente algo asi:
a minutos1 y 2 los cargo: minutos1:=(date);

Código Delphi [-]
 
var horas,minutos,minutosTotales: Int64; momento1,momento2:Tdatetime;
 
minutosTotales :=MinutesBetween(momento1, momento2);
horas :=minutosTotales div 60;
minutos:= minutosTotales mod 60;
showmessage('Tiempo a Computar: '+inttostr(horas)+' Horas '+inttostr(minutos)+' Minutos');


el error viene cuando tomo por ejemplo: momento1 con la hora en am/pm y momento2 con el otro formato de hora. el calculo es incorrecto. por ejemplo se confunde las 22:00 hs con las 10:00 hs!

gracias!!!

Lepe 16-11-2007 13:29:04

Un TDatetime está implementado como un número en float:
- La parte entera son los días transcurridos desde 31/12/1899
- La parte fraccionaria son las horas y minutos de un día cualquiera.

Así que "am/pm" no influye para nada a la hora de realizar cálculos, solo para mostrar la información.

Dices que haces la asignación: momento1 := date, pero Date(), es una función que solo retorna la fecha (es decir, trunca el valor de la hora), deberías usar la función Now() si quieres tener en cuenta la fecha y hora.

Por otra parte, ten en cuenta el cambio de fecha; quiero decir, si tienes
01/01/2007 01:00:00 y le restas
01/01/2007 23:00:00 te va a dar 22 horas de diferencia (es el resultado correcto).

Sin embargo, la diferencia entre:
01/01/2007 23:00:00
02/01/2007 01:00:00
te dirá que son 2 horas.

Cuando se empieza a trabajar con fechas, suele cometerse ese error, no sé si es tu caso, pero creo conveniente hacer la aclaración.

Saludos


La franja horaria es GMT +2. Ahora son las 08:50:54.

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