zoukankan      html  css  js  c++  java
  • python datetime时区转换

    From: http://www.dannysite.com/blog/122/

    Python标准库中的datetime模块提供了各种对日期和时间的处理方法。从本文的主题着手,首先利用datetime中提供的utcnow()方法获取到当前UTC时间:

    1
    2
    3
    4
    >>> import datetime
    >>> utc_now = datetime.datetime.utcnow()
    >>> utc_now
    datetime.datetime(2013124154321872000)

    而此时其tzinfo为none:

    1
    2
    >>> utc_now.tzinfo
    >>>

    当涉及国际时区时,时区转换则会经常使用到,比如来尝试将刚才的UTC时间转换为本地时间。对于Python3.3+版本,可以这么做:

    1
    2
    >>> utc_now.replace(tzinfo=datetime.timezone.utc).astimezone(tz=None)
    datetime.datetime(2013124234321872000, tzinfo=datetime.timezone(datetime.timedelta(028800), '中国标准时间'))

    不过该方法貌似并不方便,特别是在转换其他时区的时候。而对于更低版本的Python,则datetime.timezone可能压根就还没有。因此更便捷的方法是借助第三方包来实现 —— pyzt,下面就借助于它来实现时区转换:

    1
    2
    3
    4
    5
    6
    7
    8
    >>> from pytz import timezone
    >>> utc_now.tzinfo
    >>> tzchina = timezone('Asia/Chongqing')
    >>> tzchina
    <DstTzInfo 'Asia/Chongqing' LMT+7:06:00 STD>
    >>> utc = timezone('UTC')
    >>> utc_now.replace(tzinfo=utc).astimezone(tzchina)
    datetime.datetime(2013124234321872000, tzinfo=<DstTzInfo 'Asia/Chongqing' CST+8:00:00 STD>)

    要转换为其他时区,则以此类推。

    对于我自己来说,时区的转换主要出现在Django中,会经常需要将UTC时间转换为本地时间,而Django本身也已经为我们考虑到了这一点,因此实际操作起来更为方便:

    1
    2
    3
    4
    5
    >>> from django.utils.timezone import utc
    >>> from django.utils.timezone import localtime
    >>> now = datetime.datetime.utcnow().replace(tzinfo=utc)
    >>> localtime(now)
    datetime.datetime(20131250313122000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)

    在Python中转换时区的方法还有很多,通过探索也许还能找到更好的方法。

    from pytz import timezone
    
    def datetime_as_timezone(date_time, time_zone):
        tz = timezone(time_zone)
        utc = timezone('UTC')
        return date_time.replace(tzinfo=utc).astimezone(tz)
    
    
    def datetime_to_str(date_time):
        date_time_tzone = datetime_as_timezone(date_time, 'Asia/Shanghai')
        return '{0:%Y-%m-%d %H:%M}'.format(date_time_tzone)
  • 相关阅读:
    第三届NSCTF之easy ssrf
    第三届NSCTF测试题Welcome
    第三届NSCTF测试题Code php 之MD5碰撞和php strcmp函数绕过
    PUT方法提交message
    使用John the Ripper破解sha512加密的shadow文件密码
    第2章 SQL注入攻击:课时1:注入攻击原理及自己编写一个注入点
    配置IIS10支持php语言脚本
    身边的base64解码工具
    什么是JWT
    IDEA 远程调试
  • 原文地址:https://www.cnblogs.com/presleyren/p/10310859.html
Copyright © 2011-2022 走看看