🛠️ToolsShed

Arbeitswochenrechner

Arbeitswochen und ISO-Wochennummern in einem Datumsbereich zählen.

Loading...

Ein Arbeitswochenrechner hilft dir, die Anzahl der Arbeitswochen zwischen zwei Daten zu zählen — nützlich für Projektplanung, Gehaltsabrechnungszeiträume, Vertragslaufzeiten und Semesterplanung. Im Gegensatz zur einfachen Division der Tage durch 7 werden Teilwochen korrekt berücksichtigt, und die Berechnung folgt dem ISO-8601-Standard, der den Montag als ersten Wochentag festlegt.

ISO-Wochennummern sind eine international standardisierte Methode zur Kennzeichnung von Kalenderwochen und werden in Europa sowie in Branchen wie Fertigung, Logistik und Bauwesen weit verbreitet genutzt. Die KW 1 des ISO-Kalenders ist die Woche, die den ersten Donnerstag des Jahres enthält. Dieses Tool berechnet sowohl die Gesamtanzahl der Arbeitswochen als auch die ISO-Wochennummer jeder einzelnen Woche.

Die Bedienung ist einfach: Wähle ein Start- und ein Enddatum, und die Ergebnisse werden sofort angezeigt — inklusive Gesamtarbeitswochen, Monatsaufschlüsselung und ISO-Wochennummern. Alle Berechnungen erfolgen direkt im Browser, ohne dass Daten an einen Server übertragen werden.

Häufig gestellte Fragen

Code-Implementierung

from datetime import date, timedelta

def get_iso_week(d: date) -> tuple[int, int]:
    """Return (iso_year, iso_week) for a date"""
    iso = d.isocalendar()
    return iso.year, iso.week

def get_monday_of_week(d: date) -> date:
    """Get the Monday of the week containing date d"""
    days_since_monday = d.weekday()  # Monday=0, Sunday=6
    return d - timedelta(days=days_since_monday)

def count_work_weeks(start: date, end: date) -> list[dict]:
    """List all ISO work weeks in a date range"""
    weeks = []
    current = get_monday_of_week(start)

    while current <= end:
        iso_year, iso_week = get_iso_week(current)
        friday = current + timedelta(days=4)
        weeks.append({
            'iso_year': iso_year,
            'iso_week': iso_week,
            'week_label': f'W{iso_week:02d}',
            'start': current,
            'end': friday,
            'month': current.strftime('%B %Y'),
        })
        current += timedelta(weeks=1)

    return weeks

# Usage
start = date(2026, 1, 1)
end = date(2026, 3, 31)
weeks = count_work_weeks(start, end)

print(f"Total work weeks: {len(weeks)}")
for w in weeks[:5]:  # Show first 5
    print(f"  {w['week_label']} ({w['iso_year']}): {w['start']} - {w['end']}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.