PDA

Ver la Versión Completa : Contar Dias


Paradiso
27-06-2004, 07:29:18
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:

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;


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.

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