PDA

Ver la Versión Completa : Determinar dias entre dos fechas


OscarRd
14-02-2007, 20:30:32
Saludos Colegas,

Trabajo con Delphi5

Necesito saber la cantidad de sabados que hay en un rango de fechas
he visto la funcion DayOfWeek pero no consigo dar con el asunto.

Lo que quiero es crear una funcion que pasandole un rango de fechas: FechaInico y FechaFinal, al restar estas cantidades me devolvera la diferencia de fechas, necesito saber cuantos sabados hay en esa fecha.

Esto es para el calculo de las prestaciones laborales.

Todos sus comentarios seran bienvenidos
Gracias de antemano

Oscar Portorreal
Santo Domingo, Rep. Dom.

sinalocarlos
14-02-2007, 21:04:27
prueba con:

showmessage(floattostr(trunc((((fecha1 - fecha2) - (7-DayOfWeek(fecha1 .date)))/7)+1)));


donde fecha1 y fecha2 son tdatetime
y suponiendo que el inicio de la semana en el domingo, tengo entendido que DayOfWeek da esto por hecho ya

Caral
14-02-2007, 21:14:22
Hola
Esto no es exatamente lo que pides pero te puede ayudar, esta hecho por Al Gonzalez.
2 dateTimepicker y un edit en el evento on click de un boton.


procedure TForm1.Button1Click(Sender: TObject);
Var
FechHora1 :TDateTime;
FechHora2 :TDateTime;
Dias :Integer;
begin
FechHora1:= DateTimePicker1.DateTime;
FechHora2:= DateTimePicker2.DateTime;
Dias := Trunc (FechHora2) - Trunc (FechHora1);
Edit1.Text:= IntToStr(Dias);
end;

Espero te sirva de ejemplo o guia.
Saludos

OscarRd
14-02-2007, 21:23:30
Gracias por tu ayuda
pero al ejecutarlo en delphi5 me arroja el siguiente error:


[Error] NScpFCN.pas(1728): Record, object or class type required

gluglu
14-02-2007, 21:27:33
Calcula el número de días entre las dos fechas, lo divides por 7, que te dará el número de semanas, y por tanto el número de 'sábados' que tienes entre las dos fechas.

Coge el resto de la división (función Mod p.ej.) y súmaselo al día de la semana (DayOfWeek o DayOfTheWeek) de la fecha de inicio. Si dicha suma es mayor que 6 (o 7 si eliges DayOfWeek y por tanto Domingo = 1), súmale un sábado más al número inicial obtenido. ;)

Por ejemplo : Cuantos sábados hay entre 1 Feb 2007 y 25 Feb 2007 ? Diferencia = 24. 24/7 = 3 sábados seguro.
24 mod 7 = 3. DayOfTheWeek(1 Feb 2007) = 4, ... 4 + 3 = 7, por tanto al ser mayor/igual que 6 en este caso por haber utilizado 'DayOfTheWeek', tienes que sumarle 1. Resultado final = 4 sábados !

OscarRd
16-02-2007, 17:45:27
Gracias, por su valiosa ayuda si ustedes no hubiese sido posible resolver mi problema. :D

sonsicamen
06-08-2007, 12:26:00
Buenas, yo estoy buscando lo mismo pero para domingos, ¿se podría adaptar esta fórmula? Gracias :o