Ver Mensaje Individual
  #16  
Antiguo 22-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 28
Lepe Va por buen camino
Tu rutina está bien, lo que ocurre, es que DayofWeek considera el 1 como Lunes, DayofTHEWeek considera el 1 como Domingo.

Para evitar líos hay un estandar ISO, y se debería usar dayofTHEweek.

Ya que vamos a realizar un bucle por todos los días, haremos una rutina general (me gustaba más la rutina de poliburro ):

Código Delphi [-]

type TDay = (Monday = 1,
  Tuesday = 2,
  Wednesday = 3,
  Thursday = 4,
  Friday = 5,
  Saturday = 6,
  Sunday = 7);

  TDays = set of TDay;



function CountDays(ini:TdateTime; Fin:Tdatetime;const DaysToCount: TDays):integer;
var i:integer;
begin
  Result := 0;
  for I := trunc(ini) to trunc(fin)  do
  if Tday(Dayoftheweek(i)) in DaysToCount then
    inc(Result);
end;


uso de la rutina:
Código Delphi [-]
begin
  ShowMessage(inttostr(CountDays(DateTimePicker1.DateTime,
                               DateTimePicker2.DateTime, 
                               [Saturday,Sunday])));
end;

Edito: Cambio los tipos enumerados por interferencia con las constantes de Sysutils dayMonday, dayTuesday etc.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 22-06-2007 a las 13:28:51.
Responder Con Cita