zoukankan      html  css  js  c++  java
  • python处理多时区相关问题

    随着国际化的需求越来越多,在考虑多语言的同时也不可避免的要涉及到多时区的问题。
    python中对多语言也就是I18N的支持要好很多,但在多时区的处理上就稍微差一些,python标准库中虽然在datetime提供了tzinfo ,但很可惜只是一个abstract class,用户需要自己实现tzinfo。要实现local timezone的话可以借助time模块的time.timezone来实现,但还是比较繁琐。很奇怪的是,python标准库中为何不提供一个local timezone?更令人费解的是python的datetime的strptime方法却不支持带时区的时间字符串的解析。就目前的情况来看,如果想在不依赖于第三方开发包或者自己实现相关解析代码的情况下,只能寄希望于python 3.X了,至少在python2.7.2的标准库中还没有看到很好解决方式。
    就目前而来,要想妥善的解决python中的多时区问题的话,最好是采用 python-dateutil 和 pytz,两个开发包各有千秋吧,但python-dateutil中的parser是pytz所短缺的,在解析时间串的时候很好用。
    以下是一个简单的代码示例,用于展示如何采用python-dateutil来完成带时区字符串的解析,以及怎么借助datetime来输出带时区标识的时间串:

    # -*- encoding: utf-8 -*-
    
    import datetime
    import time
    import dateutil
    from dateutil.parser import parse
    
    def test_format():
        print "test time format with timezone"
        fmt = '%Y-%m-%d %H:%M:%S %z'
        now = datetime.datetime.now()
        print now.strftime(fmt)
        now = datetime.datetime.now(dateutil.tz.tzlocal())
        now_str = now.strftime(fmt)
    
        print "now is: "
        print now_str
        print "utcnow is: "
        print datetime.datetime.utcnow()
    
    
        datestr = "2011-06-02 14:00:01+07"
        dt = parse(datestr)
        print "Original datetime ", dt.strftime(fmt)
        print "Local datetime ", dt.astimezone(dateutil.tz.tzlocal()) 
    

     上述代码运行结果如下:
    >>>
    test time format with timezone
    2011-12-01 19:15:27
    now is:
    2011-12-01 19:15:27 +0800
    utcnow is:
    2011-12-01 11:15:27.745000
    Original datetime  2011-06-02 14:00:01 +0700
    Local datetime  2011-06-02 15:00:01+08:00
    >>>

    需要注意的是,在安装python-dateutil时要根据python版本选择合适的python-dateutil版本,目前而言,python2.X需要选择python-dateutil 1.5, python-dateutil 2.0是针对python3.X的,不能在python2.X上使用

    附录:

    python-dateutil 下载地址:http://labix.org/python-dateutil
    pytz 下载地址:http://pytz.sourceforge.net/


  • 相关阅读:
    CentOS7.4安装和配置Zabbix4.0
    CentOS7.4安装jdk1.8.0_201、Tomcat-8.5.38环境
    基于腾讯云CentOS7.4+MySQL5.7+Python3+uWSGI+Nginx的Django项目部署
    Windows Server 2008 R2环境下Apache2.4+Tomcat8配置
    Django2.1.5使用xadmin打造适合国人的后台管理系统
    Django2.1.3 smtp 邮件 553报警
    GitHub的Windows客户端的使用教程
    Ubuntu18.04的网络配置(静态IP和动态IP)
    CentOS6.X、7.X下Jenkins的安装及使用
    CentOS7下搭建Nginx+PHP7的安装配置
  • 原文地址:https://www.cnblogs.com/Jerryshome/p/2271076.html
Copyright © 2011-2022 走看看