🛠️ToolsShed

Çalışma Haftası Hesaplayıcı

Bir tarih aralığındaki çalışma haftalarını ve ISO hafta numaralarını say.

Loading...

Çalışma haftası hesaplayıcı, iki tarih arasındaki çalışma haftası sayısını saymanıza yardımcı olur; proje planlaması, bordro dönemleri, sözleşme süreleri ve akademik takvimler için kullanışlıdır. Günleri 7'ye bölmekten farklı olarak, bu araç kısmi haftaları doğru şekilde işler ve pazartesiyi haftanın ilk günü olarak tanımlayan ISO 8601 standardını takip eder.

ISO hafta numaraları, yıl içindeki haftaları etiketlemenin uluslararası standart yöntemidir; Avrupa'da ve imalat, lojistik, inşaat gibi sektörlerde yaygın olarak kullanılır. ISO takviminde 1. hafta, yılın ilk Perşembesini içeren hafta olarak tanımlanır. Bu araç, seçilen tarih aralığındaki toplam çalışma haftası sayısını ve her haftanın ISO hafta numarasını hesaplar.

Hesaplayıcıyı kullanmak için başlangıç ve bitiş tarihlerini seçin; toplam çalışma haftası sayısı, aylık dağılım ve ISO hafta numaraları anında gösterilir. Tüm hesaplamalar tarayıcıda gerçekleşir, sunucuya veri gönderilmez.

Sıkça Sorulan Sorular

Kod Uygulaması

from datetime import date, timedelta

def get_iso_week(d: date) -> tuple[int, int]:
    """Return (iso_year, iso_week) for a date"""
    iso = d.isocalendar()
    return iso.year, iso.week

def get_monday_of_week(d: date) -> date:
    """Get the Monday of the week containing date d"""
    days_since_monday = d.weekday()  # Monday=0, Sunday=6
    return d - timedelta(days=days_since_monday)

def count_work_weeks(start: date, end: date) -> list[dict]:
    """List all ISO work weeks in a date range"""
    weeks = []
    current = get_monday_of_week(start)

    while current <= end:
        iso_year, iso_week = get_iso_week(current)
        friday = current + timedelta(days=4)
        weeks.append({
            'iso_year': iso_year,
            'iso_week': iso_week,
            'week_label': f'W{iso_week:02d}',
            'start': current,
            'end': friday,
            'month': current.strftime('%B %Y'),
        })
        current += timedelta(weeks=1)

    return weeks

# Usage
start = date(2026, 1, 1)
end = date(2026, 3, 31)
weeks = count_work_weeks(start, end)

print(f"Total work weeks: {len(weeks)}")
for w in weeks[:5]:  # Show first 5
    print(f"  {w['week_label']} ({w['iso_year']}): {w['start']} - {w['end']}")

Comments & Feedback

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