模块dateutil【日期时间处理】
1. dateutil 模块概述
dateutil 模块特点
- 能够快速计算出相对时间例如下周、下个月、明年
- 对指定两个日期或者日期对象进行计算出相对间隔
- 能对多种时区文件进行解析例如UTC时区、tzinfo时区、Windows注册表时区
- 支持包括RFC或者其他任何字符串格式的日期进行解析
dateutil 模块获取
dateuitl 模块为Python 第三方库,因此需要使用pip工具进行下载
1 | 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获取时间列表
1
2
3
4
5
6
7from 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)]获取指定间隔的时间列表
1
2
3
4
5def get_two_date_interval(sdate,edate):
return relativedelta(parse(sdate),parse(edate))
print(get_two_date_interval("2021-10-21","2021-11-10"))
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 程序猿!