PDA

Ver la Versión Completa : cambiar la hora sin am/pm??


ale_metall
14-11-2007, 06:15:03
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);


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