Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Sumar dias a una fecha (https://www.clubdelphi.com/foros/showthread.php?t=78803)

trex2000 17-05-2012 22:07:05

Sumar dias a una fecha
 
Saludos a todos.

Mi pegunta es como puedo asignar una cantidad de dias ( variable segun una tabla ) a una fecha para poder determinar otra fecha.

Osea tengo la fecha donde se hizo un embolse y cada producto tiene un num de dias de vida, entonces necesito a la fecha de embolse sumarle los dias de vida. Como puedo hacer esto?

Ejemplo a la fecha del 09/04/2012 sumarle 75 dias de vida y como resultado que me de la fecha en que va a caducar.

Espero haberme dado a entender.

De antemano muchas gracias.

roman 17-05-2012 22:11:01

Código Delphi [-]
Fecha := Fecha + 75;

// Saludos

trex2000 17-05-2012 22:14:57

Gracias por tu pronta respuesta. :)

Pedro-Juan 18-05-2012 02:31:21

Hola.

Yo utilizo esta función:

Código Delphi [-]
//Para restar fechas sólo hay que poner en los parámetros números negativos

function Sumar_RestarAFecha(Fecha:TDateTime; Anos,Meses,Dias:Integer):TDateTime;
var dia1,mes1,ano1: integer;
    dia2,mes2,ano2: word;
begin
DecodeDate(Fecha, ano2, mes2, dia2);
ano1 := (ano2 + Anos);
mes1 := (mes2 + Meses - 1);
dia1 := (dia2 + Dias - 1);

  if (mes1 > 0) then begin
      ano1 := (ano1 + (mes1 div 12));
      mes1 := ((mes1 mod 12) + 1);
  end
  else if (mes1 < 0) then begin
      mes1 := (- mes1);
      ano1 := (ano1 - (mes1 div 12) -1);
      mes1 := (13 - (mes1 mod 12));
  end
  else mes1 := 1;

result := EncodeDate(ano1,mes1,1) + dia1;
end;

Ejemplo para tu caso:

Código Delphi [-]
Form.Label1.Caption := DateToStr(Sumar_RestarAFecha(Date,0,0,75));
dFecha := Sumar_RestarAFecha(Date,0,0,75);

//Restar
Form.Label1.Caption := DateToStr(Sumar_RestarAFecha(Date,0,0,-75));
dFecha := Sumar_RestarAFecha(Date,0,0,-75);

Espero que te sirva.

Un saludo.

LoPiTaL 18-05-2012 18:54:19

Para días, lo más sencillo, como comenta Roman, es sumárselos directamente al TDateTime, ya que este tipo de datos es un Double, cuyas unidades representan el nº de días.
Sin embargo, para cualquier otro elemento del TDateTime se tiene disponible en la unit DateUtils funciones para sumar/restar en determinados campos de una fecha, entre otras funciones (obtener si es año bisiesto, día de la semana, etc...).

En tu caso, se podría hacer simplemente:

Código Delphi [-]
  Fecha:=IncDay(Fecha, 75);

Puedes hacer lo mismo para años, meses, días, horas, min, seg y millis, y soportan tanto valores positivos como negativos (para añadir o quitar días respectivamente).

Un saludo,
LoPiTaL


La franja horaria es GMT +2. Ahora son las 13:22:56.

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