Python 时间操作之dateutil模块 复习回顾 1

这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

复习回顾

关于时间相关的模块,强大的Python提供了许多内置模块。

image.png

本期,我们将对时间操作第三方模块之一的dateutil模块相关方法学习,Let’s go~

  1. dateutil 模块概述

dateutil 模块由Gustavo Niemeyer 在2003年编写而成,经历四位维护人员进行维护,目前已经更迭得到最新的2.8.2版本

dateutil 模块对Python 内置的datetime模块进行扩展时区和解析。

查看dateutil模块包含7个模块,其中parser和rrule是主要模块

image.png

  • dateutil 模块特点

+ 能够快速计算出相对时间例如下周、下个月、明年
+ 对指定两个日期或者日期对象进行计算出相对间隔
+ 能对多种时区文件进行解析例如UTC时区、tzinfo时区、Windows注册表时区
+ 支持包括RFC或者其他任何字符串格式的日期进行解析
  • dateutil 模块获取

dateuitl 模块为Python 第三方库,因此需要使用pip工具进行下载

1
python复制代码pip install python-dateutil

image.png

  • dateutil 模块使用

+ dateutil 模块需要使用 from..import 导入
  1. 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 模块官方手册
可以查看详细的用法案例

  1. 小试牛刀

我们学习了dateutil模块相关的方法,来进行实操一下吧~

  • 使用parse解析时间字符串,rrule获取时间列表
1
2
3
4
5
6
7
python复制代码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"))
1
2
3
4
5
6
7
8
9
10
11
12
input复制代码# 终端输出结果

[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
5
python复制代码  def get_two_date_interval(sdate,edate):

return relativedelta(parse(sdate),parse(edate))

print(get_two_date_interval("2021-10-21","2021-11-10"))

image.png

总结

本期,我们对 dateutil 模块对字符串进行解析、时间间隔相关的操作进行学习。

以上是本期内容,欢迎大佬们点赞评论,下期见~

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%