Primero es necesaria una explicación acerca de ese gran desconocido TDatetime.
Una fecha en delphi es un valor double, donde la parte entera, son los días transcurridos desde el calendario base (31/12/1899), y la parte fraccionaria las horas minutos, segundos y milisegundos.
por ejemplo, sumar 1 día a una fecha, es tan simple como esto:
Código Delphi
[-]
var c :Tdatetime;
begin
c:= now; c:= c+1;
Para tratar con horas, debemos hacer cálculos, por ejemplo, sumar una hora a la fecha y hora actual:
Código Delphi
[-]
var c :Tdatetime;
begin
c:= now; c:= c+(1/24);
como un día tiene 24 horas,
1/24 corresponde a 1 hora.
1/(24*60) corresponde a un minuto.
1/(24*60*60) corresponde a 1 segundo
De esta forma se pueden hacer todo tipo de cálculos correctamente y sin error.
Delphi, en la unidad DateUtils tiene toda una batería de funciones para tratar con fechas y horas sin tener que hacer cálculos, por ejemplo:
- IncDay
- IncMonth
- IncYear
- IncHour
y otras para calcular diferencias:
- DaysBetween (diferencia en días)
- DaySpan (diferencias en días y fracciones de días)
- MinutesBetween
- HoursBetween
Te recomiendo que le eches una visual, por ejemplo en la ayuda de Delphi.
De todo lo anterior, podrías hacer el cálculo de dos formas:
Código Delphi
[-]
var Dias:integer;
begin
dias := fecha1 - fecha2;
dias := DaysBetween(fecha1, fecha2);
Saludos