请教一个 Django 时区设置问题

2017-08-02 17:47:46 +08:00
 coolair
在 settings 里设置了 TIME_ZONE = 'Asia/Shanghai'和 USE_TZ = True。
假设当前 Asia/Shanghai 时间为 5:30 pm,这样如果有个在+05:00 的管理员(那儿的时间是 2:30 pm ),添加了一片文章,这个时候他在表单里选择的发布时间是 2:30 pm,数据库里保存的时间是 UTC 时间,也就是 2:30 pm 减 8 小时( TIME_ZONE = 'Asia/Shanghai',所以减了 8,按道理应该减 5 才对)。
回过头来 Shanghai 的用户看到的这篇文章的发布时间是 2:30 pm,不是 5:30 pm。这样不就不准了么?
1189 次点击
所在节点    问与答
6 条回复
robinlovemaggie
2017-08-02 17:50:08 +08:00
哥们儿,你知道什么叫服务器时间吗?
coolair
2017-08-02 17:52:41 +08:00
@robinlovemaggie 这跟服务器时间有什么关系,这个时间是手选的,又不是用的系统时间,用系统时间的话,我用 timezone.now()就可以了。
cxbig
2017-08-02 17:55:16 +08:00
所有服务器、数据库和项目都基于 UTC,只在前端显示的时候折算成时区时间。
写入和输出的流程你都要排查一下。
chenqh
2017-08-02 17:57:46 +08:00
可以数据库直接存上海时间呀
mansur
2017-08-02 17:59:16 +08:00
建议涉及到时间的一概存时间戳
pktangyue
2017-08-02 18:23:35 +08:00
已我的经验,如果设置了 USE_TZ = True, 那么就不要在使用标准库里面的 datetime,转而使用 from django.utils import timezone 里面的方法,这里面会保证所有的 datetime 都是 aware 的,就不太容易出问题。

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

https://www.v2ex.com/t/379878

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

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

© 2021 V2EX