zoukankan      html  css  js  c++  java
  • pytz库处理时区转换

    navie时间和aware时间:
    什么是navie时间?什么是aware时间?
    1. navie时间:不知道自己的时间表示的是哪个时区的。也就是不知道自己几斤几两。比较幼稚。
    2. aware时间:知道自己的时间表示的是哪个时区的。也就是比较清醒。
    pytz库:
    专门用来处理时区的库。这个库会经常更新一些时区的数据,不需要我们担心。并且这个库在安装Django的时候会默认的安装。如果没有安装,那么可以通过`pip install pytz`的方式进行安装。

    astimezone方法:
    将一个时区的时间转换为另外一个时区的时间。这个方法只能被`aware`类型的时间调用。不能被`navie`类型的时间调用。
    示例代码如下:
    ```python
    import pytz
    from datetime import datetime
    now = datetime.now() # 这是一个navie类型的时间
    utc_timezone = pytz.timezone("UTC") # 定义UTC的时区对象
    utc_now = now.astimezone(utc_timezone) # 将当前的时间转换为UTC时区的时间
    >> ValueError: astimezone() cannot be applied to a naive datetime # 会抛出一个异常,原因就是因为navie类型的时间不能调用astimezone方法

    import pytz
    from datetime import datetime
    now = datetime.now() # 这是一个navie类型的时间
    utc_timezone = pytz.timezone("UTC") # 定义UTC的时区对象
    now = now.replace(tzinfo=pytz.timezone('Asia/Shanghai'))# 将当前的时间转换为UTC时区的时间 utc_now = now.astimezone(utc_timezone)


    # 这时候就可以正确的转换。
    ```

    replace方法:
    可以将一个时间的某些属性进行更改。
    django.utils.timezone.now方法:
    会根据`settings.py`中是否设置了`USE_TZ=True`获取当前的时间。如果设置了,那么就获取一个`aware`类型的`UTC`时间。如果没有设置,那么就会获取一个`navie`类型的时间。

    django.utils.timezone.localtime方法:
    会根据`setting.py`中的`TIME_ZONE`来将一个`aware`类型的时间转换为`TIME_ZONE`指定时区的时间。

  • 相关阅读:
    Photoshop 基础七 位图 矢量图 栅格化
    Photoshop 基础六 图层
    Warfare And Logistics UVALive
    Walk Through the Forest UVA
    Airport Express UVA
    Guess UVALive
    Play on Words UVA
    The Necklace UVA
    Food Delivery ZOJ
    Brackets Sequence POJ
  • 原文地址:https://www.cnblogs.com/shenZS/p/13335124.html
Copyright © 2011-2022 走看看