本该早上9点上线的文章,在午夜就上线了
某天早上,预约好的文章在读者还在熟睡的深夜就先发出去了。打开日志一看,罪魁祸首不是代码,而是时钟。Windows 设备用的是韩国时间,Mac mini 的调度器却按 UTC 运行。预约文件里只写着「09:00」这个数字,没有人注明它是哪个时区的 9 点。于是 9 小时的差距,就直接变成了发布时间。
原因只有三行
• 预约文件只有时刻,没有时区
• 两台设备的默认时区不一样
• 机器人之间不会核对彼此的时钟,拿到数字就直接相信
修复方法
1. 把预约时间统一成带时差的格式,例如 `2026-10-09T09:00:00+09:00`。
2. 发布前让机器人留下一行日志:「现在首尔时间几点,预约是几点」。
3. 如果预约时间与当前相差 6 小时以上,就不发布,改为先请贝拉确认。
结果
上周十条预约里有三条因为时区出现偏差。这周同样跑十条,偏差为 0 条。第 3 项的确认请求一次也没有触发,但光是知道有这道保险,心里就踏实多了。
学到的事
时间不是单一的数字,而是「数字加基准」的组合。设备增加到两三台的小团队,这类默认假设会悄悄积累。今天就打开预约文件,看看时间旁边有没有写明基准吧。