AI智能
改变未来

Django(13)django时区问题


前言

我们都知道时区,标准时区是

UTC时区

,django默认使用的就是UTC时区,所以我们存储在数据库中的时间是

UTC的时间

,但是当我们做的网站只面向国内用户,或者只是提供内部平台使用,我们希望存储在数据库中的时间就是本地时间(东八区的时间),那么django也是可以完成这样的需求的 

await时间和navie时间

什么是await时间和navie时间?它是我们python中的两种时间类型

  • navie:不知道自己的时间表示哪个时区
  • await:知道自己的时间表示的是哪个时区的 

django设置东八区时间

我们想让django中的时区变为东八区的时间,很简单

USE_TZ = FalseTIME_ZONE = \'Asia/Shanghai\'

settings.py

文件中将

USE_TZ

设置为False,将

TIME_ZONE

设置为亚洲上海,之后我们在模型中创建时间字段的时候,在数据库中存储的就是东八区的时间,而时间的类型会使

navie类型

,所以我们就不能再把navie类型的时间转换成其他时区的类型,所以我们一般不建议这么做。 

django设置UTC时区

django中默认设置的是UTC时区,所以我们数据库中存储时间就是UTC时区的时间,也就是0时区,比我们正常见到的少8个小时,但是它的时间是await类型,可以转成任意时间的时区。 

django中提供了2个时间的方法

  • django.utils.timezone.now:会根据
    settings.py

    文件中是否设置了

    USE_TZ=True

    获取当前的时间。如果为Ture,那么就获取一个

    aware类型

    的UTC时间,如果为False,那么就获取一个navie类型的时间

  • django.utils.timezone.localtime:会根据
    setting.py

    中的

    TIME_ZONE

    来将一个

    aware类型

    的时间转换为

    TIME_ZONE

    指定时区的时间

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Django(13)django时区问题