Python 时间操作之dateutil模块
复习回顾
关于时间相关的模块,强大的Python提供了许多内置模块。
本期,我们将对时间操作第三方模块之一的dateutil模块相关方法学习,Let's go~
1. dateutil 模块概述
dateutil 模块由Gustavo Niemeyer 在2003年编写而成,经历四位维护人员进行维护,目前已经更迭得到最新的2.8.2版本
dateutil 模块对Python 内置的datetime模块进行扩展时区和解析。
查看dateutil模块包含7个模块,其中parser和rrule是主要模块
-
dateutil 模块特点
- 能够快速计算出相对时间例如下周、下个月、明年
- 对指定两个日期或者日期对象进行计算出相对间隔
- 能对多种时区文件进行解析例如UTC时区、tzinfo时区、Windows注册表时区
- 支持包括RFC或者其他任何字符串格式的日期进行解析
-
dateutil 模块获取
dateuitl 模块为Python 第三方库,因此需要使用pip工具进行下载
pip install python-dateutil
-
dateutil 模块使用
- dateutil 模块需要使用 from..import 导入
2. dateutil 相关方法
-
datetutil 模块提供7个模块
方法 作用 dateutil.parser 将字符串解析成datetime dateutil.rrule 将参数输出datetime.datetime格式的时间 dateutil.relativedelta 时间偏移量 dateutil.easter 复活节日期计算 dateutil.tz 对datetime.tzinfo抽象类时区实现 dateutil.utils 提供便利且实用功能来处理日期时间 dateutil.zoneinfo 重建zoneinfo tar 内部时区信息(ftp.iana.org/tz) -
dateutil 模块提供主要的方法
-
dateutil.parser.parse(string)将字符串解析成
- string 可以为任何一个字符串
- 时间字符串形式可以有逗号、斜杠、横杆等
-
datetimedateutil.rrule.rrule() 将参数输出datetime.datetime格式的时间
rrule方法参数说明
参数 含义 freq 单位,可选的值为YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY,,MINUTELY,SECONDLY dtstart 开始时间,时间格式datetime.datatime类型 interval 间隔 wkst 周开始时间 count 生产时间的个数 until 结束时间,时间格式为datetime.dateatime类型 bysetpos 必须为整数或者整数序列,设置匹配的周期频率 bymonth 设置匹配的月份 bymonthday 设置匹配每月的日期 byyearday 设置匹配每年的天数 byaster 设置匹配的复活节,星期天为0 byweekno 设置匹配第几周 byweekday MO,TU,WE,TH,FR,SA,SU byhour 设置匹配小时 byminute 设置匹配分钟 bysecond 设置匹配秒数 cache 必须为布尔值,其实很启动缓存 -
dateutil.relativedelta.relativedelta()时间偏移量
参数 说明 year, month, day, hour, minute, second, microsecond 绝对单位,不会执行运算,会直接替换原始日期时间对应的值 years, months, weeks, days, hours, minutes, seconds, microseconds 相对信息,可以为正数或复负数,会对原始日期时间进行相对值进行计算 weekday 工作日增量值,可以为正数或者负数,例如MO(1),0=MO leepdays 给定日期中计算出润日 yearday,nlyearday 设置年份为闰年或者非闰年,转换成日/月/闰日
-
PS: dateutil 模块官方手册 可以查看详细的用法案例
3. 小试牛刀
我们学习了dateutil模块相关的方法,来进行实操一下吧~
-
使用parse解析时间字符串,rrule获取时间列表
from dateutil.rrule import * def get_two_datelist(sdate,edate): return list(rrule(DAILY,dtstart=parse(sdate),until=parse(edate))) print(get_two_datelist("2021-11-1","2021-11-10"))
# 终端输出结果 [datetime.datetime(2021, 11, 1, 0, 0), datetime.datetime(2021, 11, 2, 0, 0), datetime.datetime(2021, 11, 3, 0, 0), datetime.datetime(2021, 11, 4, 0, 0), datetime.datetime(2021, 11, 5, 0, 0), datetime.datetime(2021, 11, 6, 0, 0), datetime.datetime(2021, 11, 7, 0, 0), datetime.datetime(2021, 11, 8, 0, 0), datetime.datetime(2021, 11, 9, 0, 0), datetime.datetime(2021, 11, 10, 0, 0)]
-
获取指定间隔的时间列表
def get_two_date_interval(sdate,edate): return relativedelta(parse(sdate),parse(edate)) print(get_two_date_interval("2021-10-21","2021-11-10"))
总结
本期,我们对 dateutil 模块对字符串进行解析、时间间隔相关的操作进行学习。
以上是本期内容,欢迎大佬们点赞评论,下期见~
转载自:https://juejin.cn/post/7028598668483641351