Python日期时间处理库dateutil详解

 更新时间:2022年09月06日 15:17:45   作者:XerCis  
dateutil 为 Python 标准库 datetime 提供了强大的扩展,这篇文章主要介绍了Python日期时间处理库dateutil,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

简介

dateutil 为 Python 标准库 datetime 提供了强大的扩展

功能:

  • 相对时间,如下周一、下个月、明年
  • 两个日期间的差
  • 灵活日期解析。使用iCalendar规范的超集,支持 RFC 字符串解析
  • 几乎所有字符串格式的日期解析
  • 实现各种各样格式文件
  • 最新世界时区信息
  • 计算任何给定年份的复活节星期日日期
  • 全面的测试套件

安装

pip install python-dateutil

初试

from dateutil.parser import parse
from dateutil.easter import easter
from dateutil.rrule import rrule, YEARLY, FR
from dateutil.relativedelta import relativedelta

now = parse('May 20 13:14:00 UTC 2020')  # UTC为世界统一时间
today = now.date()  # 转换为日期
year = rrule(YEARLY, dtstart=now, bymonth=8, bymonthday=13, byweekday=FR)[0].year
rdelta = relativedelta(easter(year), today)
print('这一天是: {}'.format(today))
print('下一个8.13为周五在 {} 年'.format(year))
print('那一年的复活节离现在有多远: {}'.format(rdelta))
print('那一年的复活节日期: {}'.format(today + rdelta))
# 今天是: 2020-05-20
# 下一个8.13为周五在 2021 年
# 那一年的复活节离现在有多远: relativedelta(months=+10, days=+15)
# 那一年的复活节日期: 2021-04-04

日期比较

from dateutil.parser import parse

print(parse('2022-09-06') > parse('2022-09-05'))  # True
print(parse('2022-09-06 10:00:00') > parse('2022-09-05 00:00:00'))  # True

相对时间

使用 dateutil.relativedelta 类初始化设置的参数,并进行 + 操作

相对时间:years, months, days 等,带 s 结尾

绝对时间:year, month, day 等

import calendar
from datetime import date, datetime
from dateutil.relativedelta import *

NOW = datetime.now()
TODAY = date.today()
print('现在时间', NOW)
print('今天日期', TODAY)

print('下个月', NOW + relativedelta(months=+1))  # 注意参数有s
print('下个月再加一周', NOW + relativedelta(months=+1, weeks=+1))
print('下个月再加一周的早上10点', TODAY + relativedelta(months=+1, weeks=+1, hour=10))  # 注意用的是日期,且hour没s

print('一年前一个月', NOW + relativedelta(years=+1, months=-1))

print('下周五', TODAY + relativedelta(weekday=FR))
print('下周五', TODAY + relativedelta(weekday=calendar.FRIDAY))
print('下周三', TODAY + relativedelta(weekday=WE(+1)))  # 如果今天为周三则返回今天
print('下周三', TODAY + relativedelta(days=+1, weekday=WE(+1)))  # 即使今天周三也返回下周三

print('这个月最后的周五', TODAY + relativedelta(day=31, weekday=FR(-1)))

print('距离下个世纪还有', relativedelta(datetime(2100, 1, 1), TODAY))  # 作差

print('2020年母亲节', datetime(2020, 5, 1) + relativedelta(weekday=SU(+2)))  # 公历5月第2个周日是母亲节
print('XerCis几岁了', relativedelta(NOW, datetime(1997, 6, 19, 12, 0)))

print('今年第260天的日期', date(2020, 1, 1) + relativedelta(yearday=260))

处理不同天数的月份永远不会跨越月的边界,年同理

from datetime import date
from dateutil.relativedelta import relativedelta

# 处理不同天数的月份永远不会跨越月的边界
print(date(2003, 1, 27) + relativedelta(months=+1))  # 2003-02-27
print(date(2003, 1, 31) + relativedelta(months=+1))  # 2003-02-28
print(date(2003, 1, 31) + relativedelta(months=+2))  # 2003-03-31

# 年同理
print(date(2000, 2, 28) + relativedelta(years=+1))  # 2001-02-28
print(date(2000, 2, 29) + relativedelta(years=+1))  # 2001-02-28

解析日期时间

from dateutil import parser

d = parser.isoparse('2021-06-10T15:10:30+08:00')
print(type(d))
print(d)
# <class 'datetime.datetime'>
# 2021-06-10 15:10:30+08:00

更多例子

参考文献

dateutil Documentation

datetime Documentation

到此这篇关于Python日期时间处理库dateutil的文章就介绍到这了,更多相关Python时间处理库dateutil内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Python自动化运维和部署项目工具Fabric使用实例

    Python自动化运维和部署项目工具Fabric使用实例

    Fabric是一个Python库,只要目标机器支持ssh访问,就可以借助fabric来进行远程操作(如在host1上对host2远程运行shell命令),显然,由于fabric是个Python package,故其它Python package都可以被import到fabric特有的fabfile.py脚本中
    2016-09-09
  • python使用pgzero进行游戏开发

    python使用pgzero进行游戏开发

    今天要和大家分享的pgzero(pygame zero)是在pygame基础上做了进一步的封装,使得设计一款游戏十分的方便,特别适合少儿编程领域的教学, 与scratch相得益彰。
    2021-06-06
  • Python?遍历字典的方法汇总

    Python?遍历字典的方法汇总

    这篇文章主要介绍了Python?遍历字典的方法汇总的相关资料,需要的朋友可以参考下
    2023-09-09
  • python快速进阶利用Tkinter定制一个信息提示框

    python快速进阶利用Tkinter定制一个信息提示框

    这篇文章主要介绍了python快速进阶利用Tkinter定制一个信息提示框,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Python turtle绘图教程之七段数码管显示数字和字母

    Python turtle绘图教程之七段数码管显示数字和字母

    这篇文章主要给大家介绍了关于Python turtle绘图教程之七段数码管显示数字和字母的相关资料,Python是一种流行的编程语言,可用于编写各种类型的程序,在数码管显示器上数字8由7条不同的线条组成,需要的朋友可以参考下
    2023-10-10
  • 深入理解Django中内置的用户认证

    深入理解Django中内置的用户认证

    Django自带一个用户认证系统,这个系统处理用户帐户、组、权限和基于cookie的会话,下面这篇文章就来给大家介绍了关于Django中内置的用户认证的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-10-10
  • Python对Excel不同的行分别复制不同的次数

    Python对Excel不同的行分别复制不同的次数

    这篇文章主要介绍了如何利用Python实现读取Excel表格文件数据,并将其中符合我们特定要求的那一行加以复制指定的次数,感兴趣的小伙伴可以学习一下
    2023-07-07
  • python 随机森林算法及其优化详解

    python 随机森林算法及其优化详解

    这篇文章主要介绍了ptyhon 随机森林算法及其优化详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 3个Python?SQLAlchemy数据库操作功能详解

    3个Python?SQLAlchemy数据库操作功能详解

    Python?SQLAlchemy?是一个强大且多功能的?Python?SQL?工具包和对象关系映射?(ORM)?系统,提供了一整套众所周知的企业级持久性模式,本文为大家整理了它必须了解的3个数据库操作功能,希望对大家有所帮助
    2023-09-09
  • Python计算信息熵实例

    Python计算信息熵实例

    这篇文章主要介绍了Python计算信息熵实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论

?


http://www.vxiaotou.com