Sit/Stand Reminder Calculator
Calculate optimal sit and stand work intervals and generate a full-day schedule for ergonomic health.
Quick Presets
Ratio: 75% Sitting / 25% Standing
đȘ Sittingđ§ Standing
Questions Fréquentes
Implémentation du Code
from datetime import datetime, timedelta
def sit_stand_schedule(
work_hours: float,
sit_minutes: int,
stand_minutes: int,
start_time: str = "09:00",
) -> list[dict]:
"""Generate a sit/stand schedule for the work day."""
total_minutes = int(work_hours * 60)
interval = sit_minutes + stand_minutes
blocks = []
current = datetime.strptime(start_time, "%H:%M")
elapsed = 0
while elapsed < total_minutes:
# Sitting block
sit_end = elapsed + sit_minutes
if sit_end > total_minutes:
sit_minutes_actual = total_minutes - elapsed
else:
sit_minutes_actual = sit_minutes
blocks.append({
"start": current.strftime("%H:%M"),
"end": (current + timedelta(minutes=sit_minutes_actual)).strftime("%H:%M"),
"action": "SIT",
"minutes": sit_minutes_actual,
})
current += timedelta(minutes=sit_minutes_actual)
elapsed += sit_minutes_actual
if elapsed >= total_minutes:
break
# Standing block
stand_end = elapsed + stand_minutes
if stand_end > total_minutes:
stand_minutes_actual = total_minutes - elapsed
else:
stand_minutes_actual = stand_minutes
blocks.append({
"start": current.strftime("%H:%M"),
"end": (current + timedelta(minutes=stand_minutes_actual)).strftime("%H:%M"),
"action": "STAND",
"minutes": stand_minutes_actual,
})
current += timedelta(minutes=stand_minutes_actual)
elapsed += stand_minutes_actual
total_stand = sum(b["minutes"] for b in blocks if b["action"] == "STAND")
extra_calories = total_stand * (50 / 60) # ~50 kcal/hour standing vs sitting
return blocks, round(extra_calories)
schedule, extra_cal = sit_stand_schedule(8, 45, 15)
for block in schedule:
print(f"{block['start']}-{block['end']}: {block['action']} ({block['minutes']} min)")
print(f"\nExtra calories burned vs all-sitting: ~{extra_cal} kcal")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.