Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Sumar Dias a un fecha en Delphi 5 (https://www.clubdelphi.com/foros/showthread.php?t=69289)

alejozd 07-08-2010 06:22:46

Sumar Dias a un fecha en Delphi 5
 
Hola, quiero sumarle a una fecha una cantidad de dias, en delphi 5, no esta la DateUtils asi que no se puede con IncDay.
Creo que es por el lado de Decodedate y Encodedate, si alguien tiene un ejemplo de como se ahce le agradeceria, la cantidad de dias a sumar la tengo en una variable, puede ser string o integer, pero lo que quiero es que sume pero valide que si pasa del mes le sume otro al mes, la verdad lo logre hacer pero cuando sumo mas dias del mes me sale Invalid Argument to date encode. el codigo lo tengo asi:

procedure TFrmFacturaVenta.cxDBLPlazoPropertiesChange(Sender: TObject);
var
str,CodPl:String; //codpl para ubicar el plazo
Ano,Mes,Dia:Word;
fecfac,fecfacr:TDate;
begin
CodPl:=cxDBLPlazo.DataBinding.DataSource.DataSet.fieldbyname('FVCODPLAZO').AsString;
str:='SELECT PL.plcantidad FROM tblplazo PL WHERE PL.plid ='+ codpl;
DmGlobal.IBQy1.Close;
DmGlobal.IBQy1.SQL.Text:=str;
DmGlobal.IBQy1.Open;
str:= DmGlobal.IBQy1.Fields[0].AsString; //Aqui asigno la cantidad de dias de plazo
fecfac:=cxDateFechaFactura.Date;
DecodeDate(fecfac,Ano,Mes,Dia); //decodifica la fecha
Dia:=Dia + StrToInt(str); //le suma la cantidad de dias a la variable dia
fecfacr:=EncodeDate(Ano,Mes,Dia); //recodifica la fecha
cxDateFechaVence.date:=fecfacr; //la asigna al control dateedit
end;

De antemano muchas gracias si conocen otra manera de hacerlo.

alejozd 07-08-2010 06:38:33

perdon por poner depronto preguntas tan tontas, pero de verdad no sabia como, leyendo y leyendo me encontre con la solucion y es asi:

cxDateFechaVence.date := cxDateFechaFactura.date + StrToInt(str);

Donde StrToInt(str) es la cantidad de dias a sumar sino que lo convierto en un integer para que lo deje sumar.

tal ves esto le sirva a otra persona que como yo hasta ahora se este iniciando en Delphi.

ContraVeneno 07-08-2010 19:15:01

en delphi 5 no se llama DateUtils, se llama DateUtil.

Saludos.

albertpaul68 12-11-2010 13:25:46

Handling Dates and Time in Delphi
 
Gracias!

Como siempre, los lectores deben hacer lo que hizo Micheus e inmediatamente se refieren a la documentación de Delphi. Incluso si, como él, ya sabe bastante sobre el manejo de fechas en Delphi. Hay un montón de cosas útiles allí.

Además, la unidad (s) que usted necesita para poner en su cláusula uses variar entre las versiones de Delphi. La unidad DateUtils se introdujo en Delphi 6. FPC utiliza DateUtils también. Para Delphi 5 y anteriores de todas las cosas es la fecha en la unidad del sistema.


Por cierto, Micheus, gracias por esa función ingenioso! Que el error de punto flotante no es culpa de Delphi, aunque ... que es un problema común a todos los equipos digitales. La forma en que se maneja es brillante e instructivo!


Por último, me gustaría añadir algunas reflexiones a la hora de leer la información de la fecha de una cadena. Si sabe que su entrada se llevará una de las varias formas distintas, puede utilizar pruebas .. salvo bloques hasta que llegue una fecha correcta. Por ejemplo:

function read_date_format_1( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '2007-12-31'
end;

function read_date_format_2( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '2007 12 31'
end;

function read_date_format_3( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '31/12/2007'
end;

function read_date( users_input: string ): tDateTime;
begin
try
result := read_date_format_1( users_input )
except on EConvertError do
try
result := read_date_format_2( users_input )
except on EConvertError do
result := read_date_format_3( users_input )
end
end
end;

Este código es para la claridad y la ilustración. (Hay maneras mucho mejores de escribirlo.)

Por cierto, Micheus, gracias por recibir mi nombre.

albertpaul68 22-12-2010 09:04:07

good job
 
good attempt
Cita:

Empezado por albertpaul68 (Mensaje 382153)
Gracias!

Como siempre, los lectores deben hacer lo que hizo Micheus e inmediatamente se refieren a la documentación de Delphi. Incluso si, como él, ya sabe bastante sobre el manejo de fechas en Delphi. Hay un montón de cosas útiles allí.

Además, la unidad (s) que usted necesita para poner en su cláusula uses variar entre las versiones de Delphi. La unidad DateUtils se introdujo en Delphi 6. FPC utiliza DateUtils también. Para Delphi 5 y anteriores de todas las cosas es la fecha en la unidad del sistema.


Por cierto, Micheus, gracias por esa función ingenioso! Que el error de punto flotante no es culpa de Delphi, aunque ... que es un problema común a todos los equipos digitales. La forma en que se maneja es brillante e instructivo!


Por último, me gustaría añadir algunas reflexiones a la hora de leer la información de la fecha de una cadena. Si sabe que su entrada se llevará una de las varias formas distintas, puede utilizar pruebas .. salvo bloques hasta que llegue una fecha correcta. Por ejemplo:

function read_date_format_1( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '2007-12-31'
end;

function read_date_format_2( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '2007 12 31'
end;

function read_date_format_3( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '31/12/2007'
end;

function read_date( users_input: string ): tDateTime;
begin
try
result := read_date_format_1( users_input )
except on EConvertError do
try
result := read_date_format_2( users_input )
except on EConvertError do
result := read_date_format_3( users_input )
end
end
end;

Este código es para la claridad y la ilustración. (Hay maneras mucho mejores de escribirlo.)

Por cierto, Micheus, gracias por recibir mi nombre.



La franja horaria es GMT +2. Ahora son las 09:53:16.

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