我们使用的是 IANA 时区数据库(又称 tz database / Olson database),示例格式为 Region/City,如 Asia/Shanghai、Europe/Berlin、America/New_York。
默认时区为 UTC(后端内部统一以 UTC 存储时间);用户可以设置自己的时区,系统按用户时区展示时间并显示与 UTC 的偏移(例如 2026/01/15 15:19:33 (UTC+8))。
API/前端传入的时区建议使用 IANA 名称;支持大小写容错但会规范化为标准形式(建议使用 Asia/Shanghai 的首字母大写形式)。
注意夏令时(DST)和有些时区带分钟偏移(如 Asia/Kolkata 为 UTC+05:30)。
Q: 为什么不直接在 DB 存本地时间?
A: 存 UTC 可以避免时区转换中的混淆 、简化合并/比较与跨时区统计,前端/展示层再按用户时区转换。
Q: 用户使用 asia/shanghai(小写)会被接受吗?
A: 我们建议使用标准格式 Asia/Shanghai。服务器应对大小写做容错和规范化,但文档与对外接口示例建议使用标准大小写。
Q: 时区字符串是否会随 tzdb 升级发生变化?
A: tzdb 会更新规则(包括历史记录、DST 规则),但时区标识(如 Asia/Shanghai)一般保持稳定。定期更新服务端的 tz 数据库是必要的。
Q: 如果用户旅行到另一个时区,时间展示如何处理?
A: 若用户未更改其个人设置,系统继续使用该用户配置的时区;如果需要实时按设备时区展示,则客户端应在请求时发送当前 X-Timezone。
1.
后端统一以 UTC 存储时间,前端/邮件展示时按用户时区转换并显示 (UTC±offset)。
2.
时区使用 IANA 名称(Asia/Shanghai 等),验证并规范化输入。
3.
保存用户时区与原始事件时区(若有),处理 DST 时需保留足够元数据。
4.
在 API 文档中明确 X-Timezone 的使用与示例,并提示开发者使用 IANA 名称。
5.
在多语言邮件/通知中同时提供本地化时间字符串与 UTC 偏移,避免歧义。