본문으로 건너뛰기
🛠️ToolsShed

반복 날짜 생성기

일별, 주별, 월별 또는 맞춤 간격의 반복 이벤트 날짜를 생성합니다.

이 도구 소개

반복 날짜 생성기는 수동 계산 없이 반복 이벤트의 날짜를 자동으로 계산하고 표시합니다. 매주 팀 회의, 매월 청구일, 또는 매일 알림을 계획할 때 이 도구는 시작 날짜와 반복 패턴을 기반으로 필요한 모든 날짜를 즉시 생성합니다.

도구를 사용하려면 시작 날짜를 선택하고, 반복 유형(매일, 매주, 매월 또는 매년)을 선택한 후 생성할 반복 횟수를 입력합니다. 도구가 미래의 모든 이벤트 날짜 목록을 즉시 표시하며, 필요에 따라 복사, 내보내기 또는 참조할 수 있습니다. 3주마다 또는 6개월마다와 같은 사용자 지정 간격도 지정할 수 있습니다.

이 도구는 프로젝트 관리자, 이벤트 플래너, 반복적인 작업을 스케줄링하는 모든 사람에게 유용합니다. 수동 날짜 계산 오류를 제거하고 여러 날짜에 걸친 회의, 구독 또는 유지보수 일정을 조정할 때 시간을 절약합니다.

자주 묻는 질문

코드 구현

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.