Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿como restar horas a un datetime? (https://www.clubdelphi.com/foros/showthread.php?t=70377)

JXJ 18-10-2010 05:25:00

¿como restar horas a un datetime?
 
¿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:
Código Delphi [-]
...
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:
Cita:

o sumarle / restarle horas . minutos. seg. dias. meses años??
Con esta función creo que solucionas todo:
Código Delphi [-]
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:
Código Delphi [-]
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:
Código Delphi [-]
  AdateTime:= IncMonth(AdateTime, mm);

estas ya no funcionan o talvez las cambiaron alguien me puede dar una ayuda? como trabajar en DX10
Código Delphi [-]
  ADateTime:= IncYear(AdateTime, aa);
  AdateTime:= IncDay(AdateTime, dd);
  AdateTime:= IncHour(AdateTime, h);
  AdateTime:= IncMinute(ADateTime, m);
  AdateTime:= IncSecond(AdateTime, s);


La franja horaria es GMT +2. Ahora son las 17:59:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi