繰り返し日付生成器
日次、週次、月次またはカスタム間隔の繰り返しイベント日付を生成します。
このツールについて
繰り返し日付ジェネレータは、手作業の計算なしに繰り返しイベントの日付を計算・表示するのに役立ちます。毎週のチームミーティング、毎月の請求日、または毎日のリマインダーを計画する場合でも、このツールは開始日と繰り返しパターンに基づいて必要なすべての日付を瞬時に生成します。
このツールを使うには、開始日を選択し、繰り返しタイプ(毎日、毎週、毎月、または毎年)を選択して、生成したい発生回数を設定します。ツールは即座にすべての将来のイベント日付の完全なリストを表示し、必要に応じてコピー、エクスポート、または参照できます。カスタム間隔(例えば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.