likes
comments
collection
share

Python 时间操作之dateutil模块

作者站长头像
站长
· 阅读数 14

Python 时间操作之dateutil模块

复习回顾

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

Python 时间操作之dateutil模块

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

1. dateutil 模块概述

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

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

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

Python 时间操作之dateutil模块

  • dateutil 模块特点

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

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

    pip install python-dateutil
    

    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设置匹配第几周
      byweekdayMO,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"))
    

    Python 时间操作之dateutil模块

总结

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

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

转载自:https://juejin.cn/post/7028598668483641351
评论
请登录