单文件、零依赖、可离线打开的按周课程表。数据默认只保存在你自己的浏览器(localStorage);可选「☁️ 云同步」把课表存进你自己的 GitHub 私有 gist,实现多设备共用一份。
很多课程不是每周都上:单双周交替(大小周)、只在一段周次里开课、讲座/培训只办一次、还有些任务只要在某个日期区间内完成即可。普通"固定每周"课表表达不了这些,于是有了这个工具。
- 按周浏览:
‹ 上一周 | 第 N / 共 M 周 | 下一周 ›,一键回到本周,今天所在的列高亮 - 校历驱动:设置「第 1 周从哪天开始 + 本学期总周数」后,自动算出当前是第几周
- 六种排课规则(每门课可选):
规则 含义 每周 每周固定上 单周 第 1、3、5...周(大周) 双周 第 2、4、6...周(小周) 指定周次 如 7-9,11-12或3,5,7-9、7-(到期末)单次日期 只在某一天(讲座/培训/会议) 限时任务 某日期区间内任选一天完成(如线上培训),以横条显示在周视图顶部 - 假期自动停课:中秋/国庆等假期按日期范围配置后,落在假期的课自动跳过,当周列灰显并标注 🎉 假期名
- 可视化时间轴:卡片按真实时间绝对定位,短课也会完整展示名称/时长/地点
- 课程卡片可查看 / 编辑 / 删除;Ctrl+P 可直接打印
- 📱 手机自动适配:窄屏自动切换为「按天分块的纵向列表」,无横向滚动、整页只上下滑(周几表头与课程不再分开滚动)
- 📅 导出 .ics:一键导出标准日历文件(
📅 导出按钮),传到手机打开即可导入 iPhone / Android 系统日历,自动按周次展开、跳过假期、上课前 15 分钟提醒 - ☁️ 可选云同步:电脑 / 手机打开同一个页面 → 各自粘一次 GitHub 令牌 → 自动共享同一份课表
- 直接打开
index.html(或使用在线版) - 点右上角 ⚙️ 校历设置:填「第 1 周周一的日期」「本学期共几周」「假期」
- 点 + 添加 创建课程 / 活动,选好周次规则即可
- 数据自动保存在浏览器本地,关掉页面不丢
单双周按「第 1 周 = 单周」计算;改校历起点即可整体重排奇偶。
课表默认只存在当前设备的浏览器里;想让另一台电脑 / 手机打开就能看到同一份课表,点右上「☁️ 同步」:
- 点面板里的链接生成一个 GitHub 令牌(只勾选 gist 权限一项)
- 把令牌粘贴进「☁️ 同步」面板 → 点「保存并连接」
- 首次连接会自动在你的 GitHub 账号里创建一个私有 gist 存放课表;之后这台设备:
- 改课表 → 自动上传;打开页面 / 切回页面 / 每 90 秒 → 自动检查并拉取
- 换设备:打开同一个页面,粘自己的令牌(新生成也行),保存并连接 → 自动拉到同一份课表
- **只想"手机打开就能看"?**连接后面板里会生成「📱 只读查看链接」:手机浏览器直接打开即可(无需登录/令牌),自动刷新,只能看不能改
隐私与机制:
- 课表与令牌都只存在你自己的浏览器里:本仓库代码、GitHub Pages 站点中不含任何人的课表或令牌;令牌是「只读/写你的 gist」的最小权限,可随时在 GitHub(Settings → Developer settings)撤销
- 多处同时编辑时按「最后一次改动时间」判定:另一台设备改得更晚 → 本机自动改拉取;面板里也有「⬇️ 拉取云端 / ⬆️ 上传本地(覆盖云端)」两个手动按钮兜底
- 云端 gist 自带版本历史,误覆盖可在 gist 页面恢复
URL 参数快速添加:index.html?add=名称|星期(1-7)|开始|结束|地点|周次|备注
- 周次留空 = 每周;
o= 单周;e= 双周;d:2026年09月08日= 单次某天;r:2026年09月11日|2026年09月18日= 限时任务窗口
- 纯 HTML + CSS + JavaScript,无任何依赖,单文件 ~30KB
- 数据模型:
localStorage(课程timetable.v23、校历timetable.cfg.v23) - 课程字段:
name / d(1-7) / start / end_time / loc / tea / detail / wk(周次规则)
MIT License,见 LICENSE。