跳到内容
🛠️ToolsShed

Sit/Stand Reminder Calculator

计算最优的坐立工作间隔,并生成全天的人体工程学健康计划。

快速预设

比例: 75% 坐着 / 25% 站立

🪑 坐着🧍 站立

关于此工具

坐立工作时间表是对抗长时间久坐工作健康风险的经过验证的人体工学策略。长时间坐着与心血管疾病、2型糖尿病、肥胖和肌肉骨骼疼痛有关,但这些都可以通过在工作中定期交替坐着和站着来缓解。最新研究表明,仅仅用站立间隔打破坐着的时间就能显著改善血液循环、减少肌肉疲劳并增加日常热量消耗,使其成为当今可用的最简单但最有效的工作场所健康干预措施之一。

这个计算器可帮助你设计适合你工作时间和身体偏好的个性化坐立时间表。只需输入你希望的坐着和站着的时长(或选择45/15或30/30这样的预设比例),设置你的工作开始和结束时间,该工具就会生成一份完整的每小时时间表,准确显示何时切换位置。你还可以看到坐立比例的可视化分解,以及它如何在整个工作日中累积,使得在办公桌或站立式办公桌转换器上实施时间表变得容易。

该工具支持多种间隔比例,从为那些站立空间有限的人提供的激进25/5日常安排,到为传统办公室设置提供的更平衡的45/15或50/10时间表。记住,具体的比例不如一致性重要——任何定期的运动休息都是有益的。无论你使用的是高度可调的站立式办公桌、站立式柜台还是简单的短程步行休息,这个计算器都可以帮助你养成可持续的姿势转换习惯,改善长期健康结果。

常见问题

代码实现

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.