# 课程表计算器 — 免费每周课表制作工具

> 免费的课程表制作工具，适用于学校、大学、健身房、社团或工作安排。搭建包含课节与休息的每周网格，查看每周和整学期的课节数与教学时长，然后打印或保存为 PDF。

- **Category:** 日期与时间
- **Interactive calculator:** https://youcalc.com/zh/date-time/timetable-calculator/
- **Price:** Free, no sign-up required

## Overview

这是一个免费、无需注册的课程表制作工具，适用于任何每周安排——学校或班级课表、大学课程、健身房或健身课程表、社团训练计划，或工作培训项目。你把一天编排成一份有序的课时与休息列表，每项各有自己的时长；开始时间会自动填好。然后在“按天 × 按节”的网格中填涂各个科目，配上不同颜色，并可为每项标注教师或教室。网格本身就是成品：打印出来或保存为 PDF，贴到墙上或分发给大家。由于整张课程表都保存在页面链接中，分享链接和打印出的“扫码重新打开”二维码都能原样重新打开这张课程表——服务器上不存储任何内容，也无需账号。

## How to read your result

网格上方的结果面板就是计算器。它会按每个轮换周以及整个循环，显示课节数、教学总时长、每天和每周的休息时长，以及空闲时段的数量。各科目表则逐科细分——列出课节数与教学时长；当你启用 A/B（或更长）轮换时按周分列；当你设定开始与结束日期时，则推算到整个学期或赛季。教学时长 = 已填时段数 × 每行的时长，因此一门排在五个 50 分钟时段里的科目显示为 4 小时 10 分钟；休息时长是各休息行在所显示天数上的总和。下方的网格就是可打印的成品：每个轮换周一块、按颜色区分，各天列按你选择的每周起始日排序。

## Method

引擎首先从第一个开始时间起，遍历有序的项目列表（科目与休息），把每一项以分钟计的时长依次累加，从而得出每一行的钟点开始与结束时间——这是在循环往复的每周网格上进行的纯 ISO 8601 当日时刻运算，因此既没有日历日期，也没有夏令时。“按天 × 按节”的网格会按每个轮换周，为每个课节行与每个工作日存储一个科目（或留空）。对每一周，它会统计已填时段、教学分钟数（时段数 × 该行的时长）以及空闲时段，既分科目也算总计；轮换循环就是所有周的总和。当给定开始与结束日期时，它会统计该范围内完整的 ISO 8601 周（以周一对齐），并把它们分配到轮换之中——从 A 周开始——以推算每门科目在整个学期的课节数与时长。任何日历日期对应哪一个轮换周，则通过相对锚点的儒略日数差（不受夏令时影响）确定，与 ISO 周的基准一致。该计算是一个纯函数，不访问时钟或网络，因此同一张课程表始终产生相同的结果。

## Example

- **Setup:** 选择“学校一周”场景：周一至周五，08:30 开始，每节 50 分钟，上午有一次课间休息和 45 分钟的午餐，共六门科目，学期从 1 月 12 日到 3 月 27 日。
- **Result:** 这一天从 08:30 到 14:30，课间休息和午餐会自动排入。结果显示六门科目、每周 30 节课、25 小时教学时长，每天一小时休息；而在为期 11 周的学期里共 330 节课、275 小时，并列出每门科目的整学期总量（例如每周上 6 次的科目，整学期共 66 节课）。

## Frequently asked questions

### 每节课的时间是怎么计算的？

你设定一个开始时间，然后按顺序列出课时与休息，每项带有以分钟计的时长。从第一个开始时间起，计算器依次累加每一行的时长，于是每一节的钟点时间都会自动得出——只要改动开始时间、某一节的时长或某段休息，下面的每一行都会重新排布。运算就是普通的 hh:mm 当日时刻（ISO 8601）；而由于每周课程表是循环重复、并不落在具体日历日期上，夏令时永远不会影响它。

### 除了上学，还能用在别的地方吗？

可以——它的设计本就十分通用。六个常用场景涵盖学校一周、健身房/健身课程表、体育社团训练计划、工作培训课程、大学课程和补习中心日程；你可以更改天数、时间、课时和颜色，以适应任何每周重复的安排。课时型场景（健身房、社团）只是把每节课作为一行列出；而学校和课程型场景则展示了如何通过填涂让每天的科目各不相同。

### 什么是轮换周（A/B），学期推算又是如何进行的？

很多课程表会在两种或更多的每周模式之间交替——A 周和 B 周，或者更长的循环。设定轮换周的数量（1–12），每一周都拥有各自的网格，同时共用相同的每节时间；双击周标签即可重命名。如果你还设定了开始与结束日期，计算器会统计该范围内完整的 ISO 8601 周数，并把每门科目的总量推算到整个学期——在为期 11 周的学期中进行 A/B 轮换时，A 周出现六次，B 周出现五次。

### 教学时长、休息时长和空闲时段是怎么统计的？

教学时长是把每个已填时段按其所在行的时长相加，既分科目也算总计。休息时长是各休息行的合计，再乘以你所显示的天数。空闲时段就是网格中的空白单元格。总量会按每个轮换周给出、在整个循环中汇总，并在设定学期日期后推算到整个学期，让你一眼就能核对教学工作量或每周的投入。

### 它支持非周一开始的一周以及更长的上课周吗？

支持。你可以选择一周从周一、周日还是周六开始，以及显示哪几天，因此它不仅适用于周一至周五，也能正确处理周日至周四或六天制的一周。各天列会按你选择的每周起始日排序（遵循 Unicode CLDR 的地区惯例），并且发布版本会为阿拉伯语和乌尔都语将整个网格从右到左镜像显示。

### 以后还能分享或重新打印课程表吗？

可以。整张课程表——标题、天数、每周起始日、每节结构、轮换周、科目、颜色、每个单元格以及学期日期——都编码在页面网址里，因此分享链接和打印出的“扫码重新打开”二维码都能原样重新打开这张课程表。服务器上不存储任何内容，也无需账号。

## Related calculators

- [学习时间规划器](https://youcalc.com/zh/education-grades/study-time-planner/)
- [排班日历计算器：做四休四、Panama、DuPont](https://youcalc.com/zh/date-time/shift-pattern-calculator/)
- [工作日计算器——两个日期之间的工作日天数](https://youcalc.com/zh/date-time/working-days-counter/)
- [种植日历计算器](https://youcalc.com/zh/date-time/planting-calculator/)

## Sources

- https://en.wikipedia.org/wiki/ISO_8601
- https://en.wikipedia.org/wiki/ISO_week_date
- https://www.gov.uk/government/publications/length-of-the-school-week-minimum-expectation
- https://www.unicode.org/reports/tr35/tr35-dates.html

---

Interactive version: https://youcalc.com/zh/date-time/timetable-calculator/ · From YouCalc — https://youcalc.com
