Generator Tanggal Berulang
Menghasilkan tanggal acara berulang: harian, mingguan, bulanan, atau interval kustom.
Tentang alat ini
Penjenerator Tanggal Berulang membantu Anda menghitung dan menampilkan tanggal untuk acara berulang tanpa perhitungan manual. Baik Anda merencanakan rapat tim mingguan, pembayaran tagihan bulanan, atau pengingat harian, alat ini secara instan menghasilkan semua tanggal yang Anda butuhkan berdasarkan tanggal mulai dan pola pengulangan Anda.
Untuk menggunakan alat ini, pilih tanggal mulai, pilih jenis pengulangan (harian, mingguan, bulanan, atau tahunan), dan atur berapa banyak kejadian yang ingin Anda hasilkan. Alat ini akan segera menampilkan daftar lengkap semua tanggal acara di masa depan, yang dapat Anda salin, ekspor, atau referensikan sesuai kebutuhan. Anda juga dapat menentukan interval khusus, misalnya setiap 3 minggu atau setiap 6 bulan.
Alat ini sangat berharga bagi manajer proyek, penorganisir acara, dan siapa pun yang menjadwalkan tugas berulang. Alat ini menghilangkan kesalahan dari perhitungan tanggal manual dan menghemat waktu saat mengoordinasikan pertemuan, langganan, atau jadwal pemeliharaan di berbagai tanggal.
Pertanyaan yang Sering Diajukan
Implementasi Kode
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.