De entrada olvida los tipos TDate y TTime, que son tipos especiales de la VCL equivalentes a TDateTime, pero en esencia útiles para asuntos de RTTI, como el diseño de componentes que lleven propiedades de fecha u hora. Mientras no sea éste el caso, emplea el tipo estándar TDateTime para manejar fechas, horas y combinaciones de ambas.
Cita:
Empezado por tiammat
[...] decidió que la hora debía ser expresada por un entero para determinar los minutos transcurridos desde la media noche, es decir de 0 a 1439, y en TODA la aplicación se maneja así.
|
Bien, a pesar de que esa decisión de tu patrón fue casi sin duda un error, cuentas con la función nativa MinuteOfTheDay para convertir cualquier hora TDateTime a un entero que indique la cantidad de minutos transcurridos desde la hora 0. ¿La usas actualmente? Y si no, ¿cómo estás haciendo la conversión TDateTime -> minutos Integer? Para hacer la conversión inversa (minutos Integer a TDateTime), lo único que necesitas es dividir ese entero entre la constante MinsPerDay. ¿Cómo lo haces actualmente?
Código Delphi
[-]Uses
DateUtils;
procedure TForm1.Button1Click(Sender: TObject);
Var
I1, I2 :Integer;
begin
I1 := MinuteOfTheDay (Time); I2 := MinuteOfTheDay (0.5); ShowMessage (IntToStr (I1));
ShowMessage (IntToStr (I2));
ShowMessage (TimeToStr (I1 / MinsPerDay));
ShowMessage (TimeToStr (I2 / MinsPerDay));
end;
Cita:
Empezado por tiammat
Me he visto en muchos problemas para calcular horas/fechas, sumar la hora a una fecha [...]
|
¿Podrías detallar tales problemas y poner alguna muestra del código fuente de la aplicación donde se presentan esas dificultades? Si, por ejemplo, deseas sumar una cantidad de minutos Integer a una fecha TDateTime, sólo tienes que usar la función nativa IncMinute:
Código Delphi
[-]Uses
DateUtils;
procedure TForm1.Button2Click(Sender: TObject);
Var
FH :TDateTime;
I :Integer;
begin
I := 720;
FH := IncMinute (Date, I);
ShowMessage (DateTimeToStr (FH));
end;
Cita:
Empezado por tiammat
Espero haber sido claro, y si no lo fuí, avísame y te confundo más...
|
Más
confusión, por favor. Hasta que lleguemos al meollo del asunto y determinemos qué convendría agregar a GHF. Si lo anterior no satisface del todo tus necesidades para manejo de fechas y horas, permíteme entender estas a fondo, no escatimes en texto y código para explicarlas.
Gracias, seguimos por aquí.