Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Calendario festivos (https://www.clubdelphi.com/foros/showthread.php?t=81504)

RaulA 20-11-2012 16:05:29

Calendario festivos
 
La cuestion es que necesito tener un calendario con los dias festivos del año incluidos fines de semana para calcular datos.
habia pensado en crear una tabla con los dias festivos y cuando un usuario selecciones un periodo de tiempo (por ejemplo del 20/11/12 al 27/11/12)
comparar todas las fechas de ese periodo con las de la tabla.
La cuestion es saber cuantos dias hay no laborables en ese periodo de tiempo.
No se si alguien sabe algun metodo o algun calendario que haga referencia a dias festivos o fines de semana.
Pongo este post aqui porque he mirado problemas de calendarios y no me a solucionado nada ninguno, no se si hay alguno para ello.
Un saludo

roman 20-11-2012 16:24:06

Creo que la tabla es buena idea, pues los dias festivos son muy arbitrarios y cambian de región a región. Para contar los días laborables entre dos fechas Inicio y Final puedes

1. Contar los días entre esas dos fechas (función DaysBetween)
2. Descontar los fines de semanas (la función WeeksBetween cuenta las semanas entre dos fechas, que debe ser más o menos lo mismo que el número de fines de semana)
3. Descontar los días feriados

Para el último paso podrías hacer un select de tu tabla de dís festivos:

Código SQL [-]
select count(*) from festivos where fecha between :inicio and :final

y descontar el número que te devuelva. Aunque quiza también hay que considerar que undía festivo puede caer en fin de semana y no puedes descontarlo dos veces. Según el motor de datos que uses podrías filtrar la consulta anterior. POr ejemplo, en MySQL puedes hacer eso:

Código SQL [-]
select count(*) from festivos where fecha between :inicio and :final and dayofweek(fecha) between 2 and 6 /* entre lunes y viernes */

// Saludos

RaulA 20-11-2012 17:00:52

Muxas gracias me guiare por eso!
Un Saludo

AzidRain 20-11-2012 23:51:16

En algunos países, como México, esto puede ser un dolor de cabeza pues hay infinidad de días no laborables que no caen en la misma fecha todos los años, además de que hay algunos días que oficialmente no son laborables pero "tradicionalmente" sí, y depende mucho de cada empresa si los otorga o no. Eso sin contar que de acuerdo con la legislación mexicana, "todo trabajador tiene derecho a un día de descanso por cada 6 laborados", dicho día de descanso no necesariamente tiene que ser en domingo además de que el sábado normalmente sí se labora aunque solo medio día. Tenemos los fines de semana largos donde un feriado como por ejemplo: 20 de Noviembre que es el aniversario del inicio de la Revolución Mexicana, se recorrió al Lunes 19 para que hubiera 3 días no hábiles consecutivos. A eso hay que sumarle como ya había dicho: el día de muertos (2 de Noviembre), día de la virgen de Guadalupe (12 de Diciembre), Jueves y Viernes Santo, etc. Y todavía falta considerar los días que cada empresa considere (día del empleado, día de las madres, día del maestro, carnaval, etc.)

Yo hice hace unos años algo parecido a lo que comentas y en efecto era con una tabla pero cada año alguien tenía que encargarse de mantenerla para reflejar los feriados a considerar. Al final al menos en caso de México, creo que se sigue haciendo así y algunas empresas que venden software otorgan actualizaciones anuales de esa dichosa tabla.

En otros países como USA, casi todos los días inhábiles caen siempre el mismo día o bien, la forma de calcularlo no cambia (ejemplo el famoso "thanksgiving" que siempre es el último jueves de Noviembre), además de que sábado y domingo se consideran inhábiles.

Ya ni hablamos del calendario judío o musulmán pues nos metemos en más detalle.

Casimiro Noteví 21-11-2012 00:09:16

Por aquí nuestros queridos gobernantes nos ayudan con un calendario laboral para cada lugar, por ejemplo, este es el de Asturias.

TiammatMX 21-11-2012 00:36:24

Cita:

Empezado por Casimiro Notevi (Mensaje 450031)
Por aquí nuestros queridos gobernantes nos ayudan con un calendario laboral para cada lugar, por ejemplo, este es el de Asturias.

Casi, a los gobernantes no les interesa lo que opinemos (más que cuando se vota por ellos)... !!!:-|!!!:-|

AzidRain te propone el mejor método, ciertamente. Requiere la intervención del usuario, es propenso a fallas, pero por el momento, no hay otra opción disponible.

Casimiro Noteví 21-11-2012 01:09:04

Cita:

Empezado por tiammat (Mensaje 450032)
Casi, a los gobernantes no les interesa lo que opinemos (más que cuando se vota por ellos)... !!!:-|!!!:-|
AzidRain te propone el mejor método, ciertamente. Requiere la intervención del usuario, es propenso a fallas, pero por el momento, no hay otra opción disponible.

Lo decía "sarcásticamente" :)

De todas formas es cierto que aquí tenemos un calendario laboral oficial para cada población.


La franja horaria es GMT +2. Ahora son las 09:07:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi