🛠️ToolsShed

Mesai Kartı Hesaplayıcı

Mola düşümleri ve fazla mesai hesaplamasıyla haftalık çalışma saatlerini takip edin.

GünBaşlangıçBitişSaat
7.50h
7.50h
7.50h
7.50h
7.50h
Haftalık Toplam
37.50h
Günlük Ort.
7.50h
Normal Saatler
37.50h
Fazla Mesai (>40s)
0.00h

Sıkça Sorulan Sorular

Kod Uygulaması

from datetime import datetime, timedelta

def calculate_time_card(entries: list[dict]) -> dict:
    """Calculate total hours from clock-in/clock-out pairs.
    Each entry: {"clock_in": "HH:MM", "clock_out": "HH:MM", "break_minutes": 0}
    """
    total_seconds = 0
    for entry in entries:
        fmt = "%H:%M"
        clock_in = datetime.strptime(entry["clock_in"], fmt)
        clock_out = datetime.strptime(entry["clock_out"], fmt)
        if clock_out < clock_in:
            clock_out += timedelta(days=1)  # overnight shift
        duration = clock_out - clock_in
        break_secs = entry.get("break_minutes", 0) * 60
        total_seconds += max(0, duration.total_seconds() - break_secs)

    hours = int(total_seconds // 3600)
    minutes = int((total_seconds % 3600) // 60)
    return {
        "total_seconds": total_seconds,
        "total_hours": total_seconds / 3600,
        "formatted": f"{hours}h {minutes:02d}m",
    }

# Example time card
entries = [
    {"clock_in": "09:00", "clock_out": "12:30", "break_minutes": 0},
    {"clock_in": "13:00", "clock_out": "17:30", "break_minutes": 15},
    {"clock_in": "22:00", "clock_out": "06:00", "break_minutes": 30},  # overnight
]
result = calculate_time_card(entries)
print(f"Total: {result['formatted']} ({result['total_hours']:.2f} hours)")

Comments & Feedback

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