• orm模型(关于时区时间)


    什么是navie时间和aware时间

    1.navie时间:不知道自己的时间表示的是哪个时区,也就是不知道自己几斤几两,比较幼稚,就是本人

    2.aware时间:知道自己的时间表示的是哪个时区,比较清醒

    pytz库

    专门用来处理时区的库,这个库会经常更新一些时区的数据,我们使用这个库下的某个时区对象,里面会有跟其他时区的时差,这个库在安装django的时候会默认安装,因为django项目里面用到了时区。如里面没有安装,可以通过pip install pytz 的方式进行安装

    astimzone方法

    将一个时区的时间转换成另外一个时区的时间,这个方法只能被aware类型的时间调用,不能被navie类型的时间调用

    示例代码:

    import pytz
    from datetime import datetime
    mow = datetime.now()   #这是一个navie类型的时间, 不知道自己的时区
    utc_timezone = pytz.timezone('utc')   #定义utc时区的对象
    utc_now = now.astimezone(utc_timezone)   # 将当前的时间转换为utc的时间
    >>valueError: astimezone() cannot be applied to a navie datetime
    #会抛出一个异常,原因就是因为navie类型的时间不能调用astimezone方法
    
    asia_timezone = pytz.timezone('Asia/Shanghai')#定义一个亚洲上海的时区
    now = now.replace(tzinfo=asia_timezone)#给幼稚时间添加一个时区属性,让其变成成熟时间
    
    utc_now = now .astimezone(asia_timezone) #这个时候就可以正确的、根据亚洲上海时间求出utc的时间

    replace方法

    可以将一个时间的某些属性进行更改(也可以改变日期,月份,年份。。。)

    django.utils.timezone.now方法

    会根据settings.py中是否设置了use_tz=True

    如果设置了就会返回一个清醒的utc当前的时间点。

    如果没有设置,就会读取电脑上的一个没有时区的时间点

    DatetimeField

    日期类型。在当前字段可以添加年月日时分秒

    1。auto_now_add=True在数据第一次添加到数据库的时候,数据的当前字段会默认添加一个utc时间

  • 相关阅读:
    第四周课下作业
    # 20165206 2017-2018-2 《Java程序设计》第4周学习总结
    20165206 2017-2018-2 《Java程序设计》第三周学习总结
    20165206 2017-2018-2 《Java程序设计》第二周学习总结
    第一周学习总结
    20165206 预备作业3 Linux安装及学习
    20165206学习基础和C语言基础调查
    20165206 我期望的师生关系
    channelartlist标签调用实例
    dede如何按自己写的ID进行排序
  • 原文地址:https://www.cnblogs.com/nihao2/p/12106347.html
Copyright © 2020-2023  润新知