Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Manejo de Fechas - Sumar o restar días (https://www.clubdelphi.com/foros/showthread.php?t=70605)

r1d2m3 30-10-2010 01:15:52

Manejo de Fechas - Sumar o restar días
 
Hola a todos, tengo el siguiente requerimiento en una aplicación: necesito sumar o restar n días a una fecha y no puedo dar con la sintaxis, ¿alquien me puede tirar un cable con este punto?

Saludos y quedo a la espera de alguna respuesta.

ecfisa 30-10-2010 02:17:39

Hola r1d2m3.

La unit StrUtils tiene la función IncDay a ese fín.
Código Delphi [-]
...
var
  ADate: TDateTime;
begin
  ADate:= IncDay(Date, 1);   // ADate = fecha actual + un día
  ADate:= IncDay(Date, -5);  // ADate = fecha actual - cinco días.
end;

Revisá este link que se trató el tema.


Saludos. :)

r1d2m3 30-10-2010 03:06:24

Gracias por el hilo, eso era lo que estaba buscando. Ya había visto esa función pero en la documentación no se aclara debidamente la contradicción que surge de ver el nombre de la func, incDay, o sea incrementar dias, vista así, parece que solo sirve para sumar días, pero bueno, suerte que ustedes ya la tenían clara. Por si le sirve a alguien mas, lo que estaba intentando hacer era pasar una fecha y definir el día de inicio de la semana y el día de finalización de la misma, es decir, si le paso el dia de hoy, viernes 29 de octubre de 2010, la función me debe devolver los días lunes 25 y domingo 31, voy a usar esta función para parametrizar un listado pidiendo un filtro para un día en concreto, o bien para la semana en curso, o bien para el mes en curso. A continuación, pego el código de mi función, tienen que definir una estructura del tipo record para contener los dias inicio y final.

Código Delphi [-]
function Semana(vFecha:string):dSemana;
var
  varDiasSumo, varDiasResto, varDiaActual:Integer;
  fecDesde, fecHasta, varFecAuxi:TDateTime;
  varDevo:dSemana;

begin
  varFecAuxi:=StrToDate(vFecha);
  varDiaActual:=DayOfTheMonth(varFecAuxi);
  varDiasResto:=((DayOfTheWeek(varFecAuxi)-1)*-1);
  varDiasSumo:=(7-DayOfTheWeek(varFecAuxi));
  fecDesde:=IncDay(varFecAuxi, varDiasResto);
  fecHasta:=IncDay(varFecAuxi, varDiasSumo);
  varDevo.fecDesde:=fecDesde;
  varDevo.fecHasta:=fecHasta;
  Result:=varDevo;
end;


type dSemana = record
  fecDesde:TDateTime;
  fecHasta:TDateTime;
end;

Espero le sirva a alguien mas.

Saludos.


La franja horaria es GMT +2. Ahora son las 09:40:38.

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