随手记

一些关于代码和生活的记录

一个困扰我半天的时区问题

2026-10-21

有个每天定时跑的小任务,本地测试一切正常,放到机器上就变成了早上四点触发——比预期早了八小时。

第一反应是 cron 写错了,检查完没问题。第二反应是系统时间不对,date 一看也是对的。最后才发现是容器里的时区是 UTC,而代码里用 toISOString() 取了「今天」,再拿这个日期去查数据。

问题在于:任务本身按本地时间触发,但查数据时用的却是 UTC 日期。两点之间隔了八小时,跨日的时候就对不上了。

教训其实很老套:

改完之后顺手给容器加了 TZ 环境变量,日志时间也和本地对得上了。不过说到底,日志时间和业务逻辑没关系,真正要改的还是那几处隐式依赖本地时区的代码。

← 回到首页