问题背景
前段时间一直长期使用Django做一些项目开发,但因为时间比较紧,很多问题没有注意,比如库表中的时间戳一直使用的都是UTC时间,而在中国的话我们使用UTC+8时间才顺眼呀(比如现在是北京时间14:57那么UTC时间就是6:57)。这不是一个很大的问题,通过修改几个配置项即可完成,但是作为开发者你一定要做到对你所做的修改有了解,就像Linux经常提醒的一样“你一定要知道自己在做什么”。
问题现场
- 北京时间:2018年8月18日 19:05
- Django内部时间:2018年8月18日11:05
问题分析
timezone.now这个函数是来自django.utils包中的,也是django的时间基础,按照目前的情况,我们django项目中所有的时间都会被影响,比如对数据库中设置了自动更新时间戳的自断进行更新操作的时候,这个时间就会默认成UTC时间。
解决这个问题的第一想法就是在配置文件中找到相关配置去解决,我确实找到了这个参数,如下所示。
可以看出TIME_ZONE这个参数就是导致我们这个问题的罪魁祸首了,但是我不知道该如何去正确修改这个参数,我们先去求助下官方文档。