• Django(13)django时区问题


    前言

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

    await时间和navie时间

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

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

    django设置东八区时间

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

    USE_TZ = False
    TIME_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指定时区的时间
  • 相关阅读:
    Reasoning and Learing学习笔记
    Study in JI During the Summer Vacation
    2018-计算机系机试-A
    2018-计算机系机试(第二批)-E-绝对值排序
    2018-计算机系机试(第二批)-D-最小差值
    2018-计算机系机试(第二批)-C-数字字符个数
    2018-计算机系机试(第二批)-B-二进制输出
    2018-计算机系机试(第二批)-A-最大数
    2018-软工机试-E-热河路(TLE只拿了90分,待思考)
    2015年四川省赛
  • 原文地址:https://www.cnblogs.com/jiakecong/p/14773741.html
Copyright © 2020-2023  润新知