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
Installs
4
GitHub Stars
985
First Seen
May 20, 2026
time-zone-safety — doccker/cc-use-exp