Décalages de jours ouvrés avec jours fériés
Décale une date de moins 366 à 366 jours ouvrés en sautant week-ends et jusqu’à 1000 jours fériés.
from datetime import date, timedelta
def working_day_shift(start, days, holidays):
if type(start) is not date or type(days) is not int or not -366 <= days <= 366:
raise ValueError("days.input")
if type(holidays) is not set or len(holidays) > 1000 or any(type(d) is not date for d in holidays):
raise ValueError("days.holidays")
remaining, step = abs(days), 1 if days >= 0 else -1
for _ in range(7*(remaining+len(holidays))+7):
if remaining == 0:
return start
try:
start += timedelta(days=step)
except OverflowError as error:
raise ValueError("days.range") from error
if start.weekday() < 5 and start not in holidays:
remaining -= 1
raise RuntimeError("days.steps")- Projet
- Teste zéro, recul et bornes du calendrier, refuse les dates invalides sans modifier les jours fériés.
- Vérifiez avant d’appliquer
- Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
- Modèles
- Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
from datetime import date, timedelta
def working_day_shift(start, days, holidays):
if type(start) is not date or type(days) is not int or not -366 <= days <= 366:
raise ValueError("days.input")
if type(holidays) is not set or len(holidays) > 1000 or any(type(d) is not date for d in holidays):
raise ValueError("days.holidays")
remaining, step = abs(days), 1 if days >= 0 else -1
for _ in range(7*(remaining+len(holidays))+7):
if remaining == 0:
return start
try:
start += timedelta(days=step)
except OverflowError as error:
raise ValueError("days.range") from error
if start.weekday() < 5 and start not in holidays:
remaining -= 1
raise RuntimeError("days.steps")Explicitez les règles de planification avant de modifier le code des dates
Le code de planification mêle souvent règles métier et arithmétique calendaire ordinaire. DayThistle est un espace de programmation avec IA sous Windows où vous pouvez séparer ces questions pendant la revue du projet. Commencez par la date produite, la date attendue et les règles expliquant cette attente. Demandez au modèle connecté d’examiner le code pertinent avant de suggérer une correction.
Vous pouvez, par exemple, demander la revue d’une fonction d’échéance qui ignore les week-ends et un ensemble fourni de jours fériés. Expliquez si le jour de départ compte, le comportement des décalages négatifs et qui fournit les jours fériés. Demandez une proposition préservant ces décisions dans l’appelant et la fonction, sans supposer une définition universelle du jour ouvré.
Vérifiez les modifications à l’aide de tests tirés de ces règles. Incluez un passage de week-end, un jour férié adjacent à un week-end, un décalage nul et un recul. Exécutez les tests du projet et examinez le comportement aux limites pour les dates non prises en charge. Une échéance apparemment correcte dans un exemple ne prouve pas que tous les appelants appliquent la même politique.
DayThistle se connecte aux points de terminaison compatibles OpenAI ou Anthropic pris en charge. Vous pouvez choisir un modèle d’IA sans censure proposé par votre service ; les outils disponibles et le contexte dépendent toujours du serveur. Consignez la politique dans la tâche pour que le modèle aide à l’implémentation sans décider silencieusement de la planification de votre organisation.
Questions derrière un changement de jours ouvrés
DayThistle fournit-il un calendrier de jours fériés ?
L’exemple utilise les jours fériés fournis par votre application. Identifiez leur source et la couverture attendue dans la demande. Ne supposez pas qu’ouvrir cet espace fournit les jours fériés régionaux à jour ou décide des célébrations qui affectent vos échéances.
Le jour de départ doit-il compter dans le décalage ?
Précisez explicitement cette règle et incluez un test commençant un jour ouvré. Des politiques différentes donnent des réponses différentes. Demandez à l’assistant de préserver la convention choisie pour les déplacements en avant et en arrière.
Comment distinguer de mauvais jours fériés d’un défaut de code ?
Conservez l’ensemble exact des jours fériés avec le test en échec et examinez son contenu avant de modifier le calcul. Comparez le résultat à la politique écrite. Un jour férié manquant et une condition d’exclusion incorrecte nécessitent des corrections différentes.
Que faire si la boucle proposée n’a pas de condition d’arrêt claire ?
Demandez comment l’implémentation borne les décalages pris en charge et gère les dépassements de plage calendaire. Examinez ce comportement avant d’accepter. Exécutez les tests aux limites avec ceux des dates ordinaires pour qu’une correction d’échéance n’introduise pas un calcul sans borne.
DayThistle · Mis à jour 2026-10-25