PDA

Ver la Versión Completa : Sumar dias a una fecha


trex2000
17-05-2012, 22:07:05
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
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:


//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:


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:


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