关于软件开发中的跨地区的时区问题

78 天前
 kushu001
在最近的开发过程中,发现数据库服务器的时间是比北京时间少 8 小时的,所以存数据的时候,时间字段自动扣减了 8 小时。

因为这个现象,我突然想到跨时区的应用在处理这样的时间问题,一般都是怎么处理的,有点不太理解
目前看到的一个方案是,数据库和应用服务器都处理标准时间,不同时区的客户端自行解析时间?

但是我总感觉有点问题,特此在 v2 站点寻求一点处理方案,看看各位大佬,有没有好的解决办法😅
3041 次点击
所在节点    程序员
45 条回复
thinkershare
77 天前
时间是时间,时区是时区.
如果你的服务器不需要用户的时区信息,直接存储 UTC 时间好了。显示的时候客户端按照当前时区将 UTC 时间转换为本地时间。
如果需要储存用户时区,就需要额外的关注了。
layxy
77 天前
@cowcomic 这种情况日常运维可能会有问题,比如数据库查询数据都是 utc,日志中打印的日期也是 utc,排查问题不是很方便
pkoukk
77 天前
时间戳最简单
realpg
77 天前
一律存时间戳 uint32 或者 int64
cowcomic
76 天前
@layxy 只要标准是统一的,这些问题都能解决。如果真的是这种多区域分布式系统,体量就已经很大了,日志也不可能就这么去机器上查,肯定通过 ELK 收集起来再统一开放,到时候在查询层各自做转换也很方便。而且 DB 会有专门的 DB 团队维护,日志可以统一交给基础层团队去维护,整体的时间转化走统一组件。不可否认肯定要比独立小系统麻烦,但大体量带来的复杂性是无法避免的,这总比各自时间规范不一致带来的业务风险要强

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/1093598

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX