Zum Inhalt springen
🛠️ToolsShed

Wiederkehrender-Datum-Generator

Erzeugt wiederkehrende Ereignisdaten: täglich, wöchentlich, monatlich oder benutzerdefinierte Intervalle.

Über dieses Tool

Ein Generador für wiederkehrende Daten hilft dir dabei, Daten für sich wiederholende Ereignisse zu berechnen und anzuzeigen, ohne manuelle Berechnungen durchführen zu müssen. Egal ob du wöchentliche Teambesprechungen, monatliche Rechnungszahlungen oder tägliche Erinnerungen planst, dieses Tool generiert sofort alle benötigten Daten basierend auf deinem Startdatum und deinem Wiederholungsmuster.

Um das Tool zu verwenden, wähle dein Startdatum, wähle einen Wiederholungstyp (täglich, wöchentlich, monatlich oder jährlich) und lege fest, wie viele Vorkommen du generieren möchtest. Das Tool zeigt dir sofort eine vollständige Liste aller zukünftigen Ereignisdaten an, die du kopieren, exportieren oder bei Bedarf einsehen kannst. Du kannst auch benutzerdefinierte Intervalle angeben, z. B. alle 3 Wochen oder alle 6 Monate.

Dieses Tool ist wertvoll für Projektmanager, Veranstaltungsplaner und alle, die wiederkehrende Aufgaben planen. Es beseitigt Fehler bei manuellen Datumsberechnungen und spart Zeit bei der Koordination von Besprechungen, Abos oder Wartungsplänen über mehrere Daten hinweg.

Häufig gestellte Fragen

Code-Implementierung

from datetime import date, timedelta
from dateutil.relativedelta import relativedelta  # pip install python-dateutil

def generate_recurring_dates(
    start: str,
    pattern: str,
    count: int,
    days_of_week: list[int] = None,  # 0=Mon..6=Sun, for weekly multi-day
) -> list[str]:
    """
    pattern: 'daily' | 'weekly' | 'biweekly' | 'monthly' | 'yearly'
    """
    start_date = date.fromisoformat(start)
    results = []

    if pattern == "weekly" and days_of_week:
        # Multi-day-of-week weekly
        d = start_date - timedelta(days=start_date.weekday())  # Go to Monday of week
        while len(results) < count:
            for dow in sorted(days_of_week):
                if len(results) >= count:
                    break
                candidate = d + timedelta(days=dow)
                if candidate >= start_date:
                    results.append(candidate.isoformat())
            d += timedelta(weeks=1)
        return results

    current = start_date
    for _ in range(count):
        results.append(current.isoformat())
        if pattern == "daily":
            current += timedelta(days=1)
        elif pattern == "weekly":
            current += timedelta(weeks=1)
        elif pattern == "biweekly":
            current += timedelta(weeks=2)
        elif pattern == "monthly":
            current += relativedelta(months=1)
        elif pattern == "yearly":
            current += relativedelta(years=1)
    return results

# Examples
print(generate_recurring_dates("2025-01-06", "weekly", 5))
print(generate_recurring_dates("2025-01-01", "monthly", 6))
print(generate_recurring_dates("2025-01-06", "weekly", 8, days_of_week=[0, 2]))  # Mon+Wed

Comments & Feedback

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