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`指定时区的时间。

  • 相关阅读:
    Android桌面快捷方式的实现
    Java之currenHashMap
    windows 2003 配置邮件服务器 hMailServer+squirrelmail
    bat脚本 cmd 命令
    强制客户端更新Silverlight XAP文件方法汇总(转)
    Silverlight 常用StringFormat格式总结(转)
    Excel 操作 DLL
    silverlight 开发软件列表
    通用错误处理
    use XSD.exe in VS2010 from a xsd file to class
  • 原文地址:https://www.cnblogs.com/shenZS/p/13335124.html
Copyright © 2011-2022 走看看