教师时间冲突检测核心是区间重叠判断,即两节课A和B冲突的充要条件是:max(A.start, B.start) < min(A.end, B.end),需基于实际起止时间(非仅开始时间)计算,避免因忽略课时长度导致漏检。

Sublime Text 能不能直接开发课程排班系统?
不能。Sublime Text 是纯文本编辑器,不是 IDE 或运行环境,它本身不提供执行逻辑、数据库连接、冲突检测算法或课表导出功能。你看到的“Sublime开发”通常指用 Sublime 编辑 Python/JavaScript 等代码,再靠外部解释器或服务运行——真正干活的是 Python 脚本、Node.js 服务或后端框架,Sublime 只是写代码的工具。
教师时间冲突检测该用什么逻辑实现?
核心是区间重叠判断,不是简单比对字符串或时间戳。常见错误是只比对开始时间、忽略持续时长,导致漏检。
- 每门课需至少记录:
teacher_id、start_time(如"08:30")、duration_minutes(如90),推算出实际结束时间 - 两节课 A 和 B 冲突的充要条件是:
max(A.start, B.start) - 注意:同一教师多节连上(如 08:30–10:00 和 10:00–11:30)是否算冲突?取决于业务规则,多数教务系统默认“无缝衔接”不算冲突,但需显式处理边界(
还是 <code>) - 批量检测时别用嵌套循环(O(n²)),先按
teacher_id分组,再对每组课程按时间排序后单次扫描
课表导出为 Excel 时容易卡在哪?
Sublime 本身不生成 Excel,得靠 openpyxl 或 pandas。最常踩的坑是中文乱码和样式丢失。
-
openpyxl默认不支持中文字体渲染,导出后 Excel 显示方块,必须手动设置单元格字体:font = Font(name="Microsoft YaHei", size=10) - 合并单元格(如跨周标题)后若未正确设置
alignment,内容会偏移或截断 - 日期时间字段导出成数字(Excel 底层序列值),需调用
number_format = "yyyy-mm-dd hh:mm" - 不要在 Sublime 中直接双击打开生成的
.xlsx文件——Windows 默认用 Excel 打开没问题,但 macOS 若用预览打开会报错,应明确用 Excel 或 LibreOffice 打开
为什么本地跑通了,部署后冲突检测就失效?
大概率是时区或时间格式不一致。课程数据从网页表单、Excel 或教务系统 API 导入时,时间字段极易隐含格式歧义。
- 前端传来的
"2026-04-13T08:30:00"到后端可能被解析成 UTC 时间,而教师排班逻辑按本地时区(如Asia/Shanghai)判断,导致“看似不重叠”实则冲突 - Excel 导入时,
openpyxl读出的时间可能是datetime对象,也可能是字符串,不做类型校验就直接参与计算,TypeError或静默失败都可能发生 - 建议统一约定输入时间格式为
HH:MM字符串 + 单独字段存星期几(1~7),避免 ISO 格式带来的时区陷阱
if start_a 时最趁手的那把刀。

















