Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Determinar dias entre dos fechas (https://www.clubdelphi.com/foros/showthread.php?t=40381)

OscarRd 14-02-2007 20:30:32

Determinar dias entre dos fechas
 
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:
Código Delphi [-]
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.
Código Delphi [-]

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

Calcular rango entre fechas sin domingos
 
Buenas, yo estoy buscando lo mismo pero para domingos, ¿se podría adaptar esta fórmula? Gracias :o


La franja horaria es GMT +2. Ahora son las 04:23:17.

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