Ver Mensaje Individual
  #2  
Antiguo 08-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
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; // fecha y hora actual del sistema.
  c:= c+1; // incrementamos la fecha en 1 día

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; // fecha y hora actual del sistema.
  c:= c+(1/24); // incrementamos la fecha en 1 hora
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;
 
// o bien:
  dias := DaysBetween(fecha1, fecha2);

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita