Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Contar Dias (https://www.clubdelphi.com/foros/showthread.php?t=11838)

Paradiso 27-06-2004 07:29:18

Contar Dias
 
Hola Amigos De CLub Delphi.



Les comento, en un soft que estoy desarrollando actualmente para una Pesquera, necesito guardar la cantidad de dias de un viaje Normal, para ello
hago lo siguiente ( aclaracion: Delphi 7 + DbExpress+ Interbase):

function CantidadDeDias(Fecha1:Tdate;Fecha2:Tdate):integer; {devuelva la cantidad de dias entre dos fechas}
begin
if DaysBetween(Fecha1,Fecha2) = 0 then result := 1
else result := DaysBetween(Fecha1,Fecha2);
end;

La Cuestion es que si yo ingreso, por medio de TxDBDateEdit, por ejemplo
01/06/04 como fecha Inicio y 10/06/04 como fecha final. En Teoria me tendria que devolver 10 dias, PERO ME DEVUELVE 9.!!!
Ahora si ingreso cualquier otra fecha que no sea a partir del primero de mes, el calculo lo hace bien.

Espero haber sido claro, y desde Muchisimas Gracias.!!!!!!

Paradiso.

marcoszorrilla 27-06-2004 11:29:41

Acabo de hacer pruebas y el valor que me devuelve siempre es correcto:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
d1,d2:TDate;
nDias:Integer;
begin
d1:=Date;
d2:=date+500;
nDias:=DaysBetween(D2, d1);
Edit1.Text:=DateToStr(d1);
Edit2.Text:=DateToStr(d2);
edit3.Text:=IntToStr(nDias);
end;

Cita:

Description

Call DaysBetween to obtain the difference, in days, between two TDateTime values.

DaysBetween counts only whole days. Thus, DaysBetween reports the difference between Dec 31, 1999 11:59 PM and Jan 1, 2000 11:58 PM as 0 because the difference is one minute short of an entire day.
Un Saludo.

Lepe 27-06-2004 11:35:30

Probablemente te interese mas la funcion DaySpan que te devuelve un Double con el dia y la porción de dia. Supongo que tu problema es la hora de los datetimes y por eso no te dá el dia completo.

Cita:

Call DaySpan to obtain the difference, in days, between two TDateTime values. Unlike the DaysBetween function, which only counts whole days, DaySpan reports incomplete days as a fraction of an entire day.
Yo usaria tipos de datos TDateTime en lugar de Date solamente, y si no usas las horas, la establece por código para que sea la misma y te devuelva dias completos.

Saludos


La franja horaria es GMT +2. Ahora son las 07:45:46.

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