Python时间操作之pytz模块使用详解
目录
- 前言
- 1. pytz 模块概述
- 什么是 pytz 模块
- 国家时区映射关系表
- pytz 模块使用方法
- 2. pytz 相关方法
- 3. pytz 时区查询
- 4. pytz 日期计算
- 总结
前言 在我们日常生活中,时间概念常伴我们左右。让我们简单的回忆一下自己的一天,大致有以下时间点:
- 8:00,清晨的阳光照射到床头伴着闹钟,你从睡眠中清醒
- 8:30,你洗漱完成换好工装,出门上班
- 9:00,准时坐到工位上,开始一天的工作
- 12:00,吃午饭午休
- 14:00,开始下午的工作
- ....,时间无处不在,在我们日程计划中占着标志flag的角色
有没有更快的方法计算出指定时区的时间?----答案肯定有
在学习Python过程中,我们已经了解了一些关于时间操作的库,如:
- Python内置库:time,datatime,calendar,zoneinfo
- 第三方库:dateutil,pytz,arrow
文章图片
关于Python时间操作内置库,大家可以访问往期内容。本期,我们来重点学习一下pytz模块的使用方法,Let's go~~
1. pytz 模块概述
什么是 pytz 模块
pytz 模块是依赖Olson tz数据库导入的,它支持直接使用时区名进行时间计算
pytz 模块涉及时区,因此其也指定tzinfo信息(详情可见datetime.tzinfo)
pytz 模块通常与datetime模块结合一起使用,返回具体的时间名
pytz 模块可以解决夏令时结束时不明确的问题
重要说明:
pytz 模块支持大多数的时区计算,使用IANA的数据接口,CLDR(Unicode 语言环境)项目提供翻译
本地还需要按照依赖是时区映射表tzdata数据库(pip install tzdata)
国家时区映射关系表
国家/城市代码映射表,pytz库中存储在
_CountryTimezoneDict()
字典中文章图片
我们可以通过 pytz.country_timezones常量来获取code,timezon
pytz 模块使用方法
由于pytz是第三方库,因此我们在使用前需要使用pip进行下载其依赖库
pip install pytz
代码中使用时,我们需要使用import来进行导入
# 方式一:导入整个模块import pytz# 方式二:导入具体的库from pytz import timezone
2. pytz 相关方法 pytz 模块包含国家码查询、时区名等方法
创建本地化时间:
方式一:pytz.timezone(tzname).localise()
tz = pytz.timezone('US/Eastern')local_time =tz.localize(datetime.datetime(2022, 6, 13,23, 0, 0))print(local_time)
方式二:local_time.astimezone(tzname)
ast = local_time.astimezone(tz)
方式三:tz.normzlize()处理夏令时
nor = tz.normzlize(datetime.datetime(2022, 6, 13,23, 0, 0))
时区名获取:
- 时区名各式化:pytz.timezone(tzname)
- 获取所有的时区:pytz.country_timezones.values()
- 获取地区的代码:pytz.country_timezones.keys()
3. pytz 时区查询 根据pytz模块相关方法,我们可以写一个函数来实现场景:
- 输入一个城市:city,如"Simferopol"
- 输出城市的时区偏离量:如+3
- 首先调用pytz.country_timezones.values()获取到所有的时区timezones
- 使用split()将时区的城市名进行分割形成列表city_list
- 先在city_list.index[city]找到City_index
- 然后根据City_index在timezones找到时区tzname
- pytz.timezone(tzname)格式化,算出标准时间
import pytzfrom datetime import datetimedef timezon_city_gmt(city):timezons = sum(list(pytz.country_timezones.values()),[])cityList = [city.split("/")[1] for city in timezons]city_index = cityList.index(city)tz = pytz.timezone(timezons[city_index])gmt = "GMT" + str(datetime.now().astimezone(tz))[-6:]return gmtprint(timezon_city_gmt("Simferopol"))---GMT+03:00---
4. pytz 日期计算 同理,我们日常生活中根据当地时间,算出对方所在时区的当地时间,思路与上述大致一样。
datetime.strptime()将时间字符串转化成datetime对象
import pytzfrom datetime import datetimedef update_datetime_tz(olddatetime, city, formate):timezons = sum(list(pytz.country_timezones.values()), [])cityList = [city.split("/")[1] for city in timezons]city_index = cityList.index(city)tz = pytz.timezone(timezons[city_index])datetime_type = datetime.strptime(olddatetime, formate)newdatetime = datetime_type.astimezone(tz)return newdatetime.strftime(str(formate))print(update_datetime_tz("2022-06-13 12:46:03","Moscow","%Y-%m-%d %H:%M:%S")) ---2022-06-13 07:46:03---
总结 本期我们对时间操作的pytz模块进行基本的了解和学习。pytz模块可以帮助我们快速进行时区计算出时间,pytz模块具有tzinfo特性。
到此这篇关于Python时间操作之pytz模块使用详解的文章就介绍到这了,更多相关Python pytz模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- MySQL中2种方法限制查询超时时间
- # yyds干货盘点 # 厉害了,Python也能使用动态链接库
- Python 函数进阶-递归函数
- Linux记录操作日志
- #私藏项目实操分享#愚公系列2022年05月 Python教学课程 72-DRF框架之认证和权限
- # yyds干货盘点 # 盘点对Python列表中每个元素前面连续重复次数的数列统计
- 升级Win 8后电池续航时间变短
- python 包之 turtle 海龟绘图教程
- 通过系统之家win7旗舰版 64系统日志查看系统打开时间的技巧
- Python爬虫|了解多线程并通过Python程序实现多线程解决资源竞争、死锁等问题【非常详细】