¿como se restan horas con un date time?
si tengo la fecha y la hora en un datetime
como puedo restarle 2 horas. 3 horas.
o sumarle / restarle horas . minutos. seg. dias. meses años??
ecfisa
18-10-2010, 05:48:31
Hola JXJ.
Usá la función IncHour de la unit DateUtils.
En el ejemplo que te hice se le restan cuatro horas a la hora actual:
...
uses DateUtils;
procedure TForm1.Button1Click(Sender: TObject);
var
MDate: TDateTime;
Horas: Integer;
begin
MDate:= Now;
Horas:= 4; // Nro de horas
MDate:= IncHour(MDate, - Abs(Horas)); // Abs, por si Horas < 0
end;
Saludos. :)
ecfisa
18-10-2010, 07:58:36
Hola de nuevo JXJ.
No presté atención a la última parte de tu texto:
o sumarle / restarle horas . minutos. seg. dias. meses años??
Con esta función creo que solucionas todo:
procedure SumaRestaDateTime(var ADateTime: TDateTime; dd, mm, aa, h, m, s: Integer);
begin
ADateTime:= IncYear(AdateTime, aa);
AdateTime:= IncMonth(AdateTime, mm);
AdateTime:= IncDay(AdateTime, dd);
AdateTime:= IncHour(AdateTime, h);
AdateTime:= IncMinute(ADateTime, m);
AdateTime:= IncSecond(AdateTime, s);
end;
Ejemplos de uso:
var
MDateTime: TDateTime;
begin
SumaRestaDateTime(MDateTime, -1, -1, -1, -1, -1, -1); // Resta: 1 día, 1 mes, 1 año, 1 hr, 1 min, 1seg
SumaRestaDateTime(MDateTime, 1, 1, 1, 1, 1, 1); // Suma: 1 día, 1 mes, 1 año, 1 hr, 1 min, 1seg
SumaRestaDateTime(MDateTime, -1, 0, 0, 0, -1, 5); // Resta: 1dia y 1 min. Suma 5 seg
end;
Saludos. :)
darkbits
10-06-2016, 19:16:59
revivo este hilo despues de año porque en DX10
el unico que funciona es:
AdateTime:= IncMonth(AdateTime, mm);
estas ya no funcionan o talvez las cambiaron alguien me puede dar una ayuda? como trabajar en DX10
ADateTime:= IncYear(AdateTime, aa);
AdateTime:= IncDay(AdateTime, dd);
AdateTime:= IncHour(AdateTime, h);
AdateTime:= IncMinute(ADateTime, m);
AdateTime:= IncSecond(AdateTime, s);
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.