Django学习笔记4 解决Django时区设置问题(从官方文档到源码)

本文介绍了在Django项目中遇到的时区问题,详细分析了TIME_ZONE和USE_TZ两个配置参数的作用,并通过实验验证了它们如何影响日期和时间的显示及存储。在实验中,作者展示了在不同设置下,Django模板、数据库中的时间戳表现。最终建议遵循Django的默认设置USE_TZ=True,以避免潜在的夏令时问题,保持UTC时间的一致性。
摘要由CSDN通过智能技术生成

问题背景

前段时间一直长期使用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时间。
解决这个问题的第一想法就是在配置文件中找到相关配置去解决,我确实找到了这个参数,如下所示。
图1

可以看出TIME_ZONE这个参数就是导致我们这个问题的罪魁祸首了,但是我不知道该如何去正确修改这个参数,我们先去求助下官方文档。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值