这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战
复习回顾
我们都知道量度两个时刻之间的间隔长短的物理量叫做“时间”,时间是伴随的空间变化而变化的。众所周知,地球是围绕的太阳转动的。地球公转一周是一年,地球自转一周是一天。
由于地球是自西向东转的,东边区域比西方总是先看到太阳,因此划分出时区概念。
- 什么是时区?
+ 时区是指同一个时间制的区域
+ 全球共划分24个时区(-12,12)
+ 以本初子午线为基准,从零时区向东划分东一区至东十二区;向西划分西一至四二区
- Python 关于时间操作
我们前面已经学习相关的时间日期操作的模块
+ 重点关注系统日志文件的时间戳的[time 模块](https://dev.newban.cn/7024474853809848356)
+ 对时间日期进行更加人性化处理的[datetime模块](https://dev.newban.cn/7024792501047263269)
+ 打印出所有年或者月份的日历的[calendar模块](https://dev.newban.cn/7026680117770321950)
那么,关于时区处理相关操作的,Python 有没有相关的模块提供?
在Python 3.9之前,没有独立的模块对时区进行处理的模块,而是使用datetime模块中timezone类来实现的
在Python 3.9,提供了zoneinfo独立的模块支持IANA时区的支持。
接下来我们详细来学习一下zoneinfo模块相关方法吧,Let’s go~
zoneinfo 模块是Python 3.9版本推出一个可以实现时区的模块,该模块默认情况下是使用系统时区的数据。
zoneinfo 模块是基于datetime、time模块的类型zoneinfo类而设计的
查看Zoneinfo代码,可知道Zoneinfo类是tzinfo的一个子类
- gmt、utc及本地时间
+ gmt:格林威治平时(也称格林威治时间),前世界标准时间
+ utc:协调世界时,又称现世界标准时间,由原子时间+世界时间两部分组成
+ 本地时间=gmt+时区偏移=utc+时区偏移
- zoneinfo 模块特点
+ 支持IANA 时区查询,如时区查询代码Asia/Kolkata
+ 可以与datetime时间日期和日期算法上进行兼容,更加方便处理夏令时
+ 不提供时区数据,需要下载第三方库tzdata
- zoneinfo 模块使用
zoneinfo 模块是Python 3.9版本支持的
+ 检查本地电脑Python版本更新到3.9
+ 在代码中只需要使用import进行导入即可
1 | python复制代码import zoneinfo |
- zoneinfo 模块提供相关方法
方法 | 作用 |
---|---|
zoneinfo.avariable_timezones() | 获取包含IANA时区所有效的key值 |
zoneinfo.reset_tzpath(to=None) | 设置或者重置时区搜索路径 |
- zoninfo 模块提供给属性
属性 | 作用 |
---|---|
zoneinfo.TZPATH | 时区搜索的路径只读序列 |
- zoneinfo 模块提供的Zoneinfol类是datetime.tzinfo的抽象基类。
方法 | 作用 |
---|---|
zoneinfo.Zoneinfo(key) | 是datetime.tzinfo表示由字符串表示IANA时区 |
ps:Zoneinfo对象可以使用在datetime中传入给tzinfo
- zoninfo.Zoneinfo类提供给方法
方法 | 作用 |
---|---|
Zoneinfo.clear_cache(*,key) | 清除zoneinfo方法缓存失效的 |
Zoneinfo.form_file(fobj,/,key) | 构建一个zoneinfo从文件的对象返回字节 |
Zoneinfo.no_cache(key) | 绕过构造函数缓存的备用构造函数 |
- zoninfo.Zoneinfo类提供给属性
属性 | 作用 |
---|---|
Zoneinfo.key | 从IANA数据中只读attribute返回key传递给构造函数 |
我们根据前面集几节的学习,来对zoneinfo 模块相关方法进行学习
- zoneinfo.Zoneinfol类是datetime.tzinfo抽象基类,可以传入tzinfo
- Zoneinfo对象可以结合datetime.datetime实例化对象传入tzinfo字段,获取具有时间,进行时间计算等
1 | python复制代码import zoneinfo |
总结
本期,我们对Python 3.9 新提供的zoneinfo模块相关使用进行学习,支持IANA时区查询,替代了以前必须要使用第三库pytz来转换时区代码。
以上是本期内容,欢迎大佬们点赞评论,下期见~
本文转载自: 掘金