cc-time-zone-safety
Installation
SKILL.md
时区安全规范
服务端代码里,"当前时间"几乎从不应该裸调。一个 docker 镜像默认 UTC、一个生产机配置 Asia/Shanghai,同一份代码跑出来的"本周起点"就差 8 小时。
配套:
query-performance-safety(性能) /multi-tenant-safety(隔离)
陷阱 #1: 裸调 .now() 依赖 JVM 默认时区
场景: LocalDate.now() / LocalDateTime.now() / Instant.now() / new Date() 不传时区
问题根因
LocalDate.now()在 UTC 服务器上返回的"今天"比业务时区少 1 天(凌晨场景)LocalDateTime.now()拿到的是 JVM 默认时区时间,docker base image 经常默认 UTC- 同一段代码在开发机(Asia/Shanghai)和生产(UTC)跑出不同结果,无法本地复现
- 数据库时间通常按业务时区入库,比较时一边是业务时区一边是 UTC → 偏差 8h