Werkdagen verschuiven met feestdagen
Verschuif een datum met min 366 tot 366 werkdagen, sla weekenden en maximaal 1000 feestdagen over.
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")- Project
- Test nul, achteruitgaan en kalendergrenzen, weiger ongeldige datums zonder de feestdagen te wijzigen.
- Controleer vóór het toepassen
- Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
- Modellen
- Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.
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")Maak planningsregels expliciet voordat u datumcode wijzigt
Planningscode vermengt vaak bedrijfsbeleid met gewone kalenderberekeningen. DayThistle is een Windows-programmeerwerkruimte met AI waarin u die vragen kunt scheiden tijdens de beoordeling van uw project. Begin met de datum die de toepassing produceert, de verwachte datum en de regels achter die verwachting. Laat het verbonden model de relevante code inspecteren voordat het een correctie voorstelt.
U kunt bijvoorbeeld vragen om een beoordeling van een deadlinehulpfunctie die weekenden en een aangeleverde feestdagenverzameling overslaat. Leg uit of de begindag meetelt, hoe negatieve verschuivingen werken en wie de feestdaggegevens aanlevert. Vraag om een voorstel dat die beslissingen in zowel de aanroepende code als de hulpfunctie behoudt, in plaats van één universele definitie van een werkdag te veronderstellen.
Verifieer de voorgestelde wijzigingen met testgevallen die uit die regels voortkomen. Neem een weekendovergang, een feestdag naast een weekend, een nulverschuiving en een achterwaartse verschuiving op. Voer de projecttests uit en inspecteer het grensgedrag voor niet-ondersteunde datums. Een correct ogende deadline in één voorbeeld toont niet aan dat alle aanroepers hetzelfde beleid hanteren.
DayThistle maakt verbinding met ondersteunde OpenAI-compatibele of Anthropic-eindpunten. U kunt een AI-model zonder censuur kiezen dat uw dienst aanbiedt; beschikbare hulpmiddelen en context blijven afhankelijk van de server. Leg het beleid vast in de taak, zodat het model de implementatie ondersteunt zonder stilzwijgend te bepalen hoe uw organisatie werk plant.
Vragen achter een werkdagwijziging
Levert DayThistle een feestdagenkalender?
De voorbeeldtaak gebruikt feestdaggegevens die uw toepassing aanlevert. Benoem hun bron en verwachte dekking in het verzoek. Ga er niet van uit dat het openen van de werkruimte actuele regionale feestdagen levert of bepaalt welke feestdagen uw deadlines beïnvloeden.
Moet de begindag meetellen bij de verschuiving?
Specificeer die regel expliciet en neem een testgeval op waarin de start op een werkdag valt. Verschillende beleidskeuzes leveren verschillende antwoorden. Vraag de assistent de gekozen conventie bij zowel voorwaartse als achterwaartse verplaatsing te behouden.
Hoe onderscheid ik onjuiste feestdaggegevens van een codefout?
Bewaar de exacte feestdagenverzameling bij het falende testgeval en inspecteer de inhoud voordat u de berekening wijzigt. Vergelijk het resultaat met het vastgelegde beleid. Een ontbrekende feestdag en een onjuiste oversla-voorwaarde vereisen verschillende correcties.
Wat als de voorgestelde lus geen duidelijke stopvoorwaarde heeft?
Vraag hoe de implementatie ondersteunde verschuivingen begrenst en kalenderoverloop afhandelt. Beoordeel dat gedrag voordat u haar aanvaardt. Voer grenstests naast gewone datumtests uit, zodat een reparatie voor één deadline geen onbegrensde berekening introduceert.
DayThistle · Bijgewerkt 2026-10-25