İçeriğe geç
🛠️ToolsShed

Tekrarlayan Tarih Oluşturucu

Günlük, haftalık, aylık veya özel aralıklarla tekrarlayan etkinlik tarihleri oluşturur.

Bu araç hakkında

Tekrarlanan Tarih Oluşturucu, el ile hesaplama yapmadan yinelenen olayların tarihlerini hesaplamanıza ve görüntülemenize yardımcı olur. Haftalık takım toplantılarını, aylık fatura ödemelerini veya günlük hatırlatıcıları planliyor olursanız, bu araç başlangıç tarihinize ve yineleme düzenine dayalı olarak ihtiyaç duyduğunuz tüm tarihleri anında oluşturur.

Aracı kullanmak için başlangıç tarihinizi seçin, yineleme türünü (günlük, haftalık, aylık veya yıllık) seçin ve oluşturmak istediğiniz oluşum sayısını ayarlayın. Araç, tüm gelecek olay tarihlerinin eksiksiz bir listesini hemen gösterecek ve siz gerektiğinde kopyalayabilir, dışa aktarabilir veya başvurabilirsiniz. Örneğin her 3 haftada bir veya her 6 ayda bir gibi özel aralıklar da belirtebilirsiniz.

Bu araç proje yöneticileri, etkinlik planlayıcıları ve yinelenen görevleri programlayan herkes için çok değerlidir. El ile tarih hesaplamalarından kaynaklanan hataları ortadan kaldırır ve birden çok tarih arasında toplantıları, abonelikleri veya bakım takvimlerini koordine ederken zaman kazandırır.

Sıkça Sorulan Sorular

Kod Uygulaması

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.