🛠️ToolsShed

Calculateur de Feuille de Temps

Suivez les heures de travail hebdomadaires avec déductions de pause et calcul des heures supplémentaires.

JourDébutFinHeures
7.50h
7.50h
7.50h
7.50h
7.50h
Total Hebdomadaire
37.50h
Moy. Quotidienne
7.50h
Heures Régulières
37.50h
Heures Sup. (>40h)
0.00h

Questions Fréquentes

Implémentation du Code

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.