Python日期时间处理库dateutil详解

目录
  • 简介
  • 安装
  • 初试
  • 日期比较
  • 相对时间
  • 参考文献

简介

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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python最好的日期处理库pendulum的使用指南

    关于日期处理,Python 提供了很多的库,比如标准库 datetime.第三方库 dateutil.arrow 等等.这里介绍一个我个人最喜欢的库 pendulum,用起来可以说非常的方便,任何对日期的操作它都能满足. 在使用之前需要先安装,直接 pip install pendulum 即可. 下面来看一下用法,首先是 datetime, date, time 的创建. import pendulum dt = pendulum.datetime(     2022, 3, 28, 20, 

  • Python 常用日期处理 -- calendar 与 dateutil 模块的使用

    本文紧承上一篇 Python 常用日期处理,因制于篇幅的大小需求才临时分立新篇,这里要简单提到 calendar 和 dateutil 模块的使用,其中 calendar 是 Python 内置的.相比于上一篇而言,此处主旨会更明确一些,只记录三个应用案例,分别是 用 dateutil 灵活的解析 datetime 字符串 给定起始日期后的连续日期 给定起始日期后连续的月末日期 dateutil 灵活的解析 datetime 字符串 使用 Python 内容的 date 或 datetime,

  • Python日期时间处理库dateutil详解

    目录 简介 安装 初试 日期比较 相对时间 参考文献 简介 dateutil 为 Python 标准库 datetime 提供了强大的扩展 功能: 相对时间,如下周一.下个月.明年 两个日期间的差 灵活日期解析.使用iCalendar规范的超集,支持 RFC 字符串解析 几乎所有字符串格式的日期解析 实现各种各样格式文件 最新世界时区信息 计算任何给定年份的复活节星期日日期 全面的测试套件 安装 pip install python-dateutil 初试 from dateutil.parse

  • Python日期时间Time模块实例详解

    本文实例讲述了Python日期时间Time模块.分享给大家供大家参考,具体如下: 关于时间和日期模块 python程序能用很多方式处理日期和时间,转换日期格式是一种常见的功能. python提供了一个time和calendar模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. python的time模块下有很多函数可以转换常见的日期格式. Time模块 1.1 名词解释 UTC :格林威治天文时间,世界标准时间,

  • Python中logging日志库实例详解

    logging的简单使用 用作记录日志,默认分为六种日志级别(括号为级别对应的数值) NOTSET(0) DEBUG(10) INFO(20) WARNING(30) ERROR(40) CRITICAL(50) special 在自定义日志级别时注意不要和默认的日志级别数值相同 logging 执行时输出大于等于设置的日志级别的日志信息,如设置日志级别是 INFO,则 INFO.WARNING.ERROR.CRITICAL 级别的日志都会输出. |2logging常见对象 Logger:日志,

  • Python获取时间的操作示例详解

    目录 获得当前时间时间戳 获取当前时间 获取昨天日期 生成日历 计算每个月天数 计算3天前并转换为指定格式 获取时间戳的旧时间 获取时间并指定格式 pandas 每日一练 21读取本地EXCEL数据 22查看df数据前5行 23将popularity列数据转换为最大值与最小值的平均值 24将数据根据project进行分组并计算平均分 25将test_time列具体时间拆分为两部分(一半日期,一半时间) 获得当前时间时间戳 # 注意时区的设置 import time # 获得当前时间时间戳 now

  • Java日期时间类及计算详解

    目录 1. Java中与日期相关的类 1.1 java.util包 ① Date类 ② Calendar 日历类 roll 设置Calendar的容错性 set 1.2 java.time包 ① LocalDate 本地日期类 ② LocalTime 本地时间类 ③ LocalDateTime 本地日期时间类 ④ Instant 类 ⑤ Period 类 ⑥ Duration 类 2. 时间间隔计算 2.1 Period与Duration类 2.1.1 Duration 2.1.2 Period

  • Python中的pathlib库使用详解

    目录 1. pathlib库介绍 2. pathlib库下Path类的基本使用 2.1 获取文件名 2.2 获取文件前缀和后缀 2.3 获取文件的文件夹及上一级.上上级文件夹 2.4 获取该文件所属的文件夹及其父文件夹 2.5 文件绝对路径 2.6 获取当前工作目录 2.7 获取用户 2.8 获取文件详细信息 2.9 检查目录或者文件是否存在 2.10 检查指定指定路径是否为folder或者file 2.11 将相对路径转换为绝对路径 2.12 遍历一个目录 2.13 获取所有符合pattern

  • Python开发的HTTP库requests详解

    Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作. 1. GET请求 # 1.无参数实例 import requests ret = requests.get('https://github.com/timeline.json') print(ret.url) print(re

  • PHP函数之日期时间函数date()使用详解

    日期时间函数是PHP 的核心组成部分.无需安装即可使用这些函数.下面来详细说说date函数的具体用法: PHP Date() 函数PHP Date() 函数可把时间戳格式化为可读性更好的日期和时间. 语法date(format,timestamp) format 必需.规定时间戳的格式.timestamp 可选.规定时间戳.默认是当前的日期和时间. PHP的日期时间函数date() 复制代码 代码如下: $t=time();echo date("Y-m-d H:i:s",$t); 第一

  • Golang 日期/时间包的使用详解

    golang 的日期时间包:time 的使用方式. time package 包含了 time.Time 时间对象 及 构建此时间对象的一些方法(time.Unix(), time.Parse()) golang 可精确到 nanosecond,故相应的函数返回值或参数都已纳秒为单位,我们可以借助time.ParseDuration(durationString string)友好的生成纳秒度量的时间跨度值 golang 的时间格式串Layout固定为 2006-01-02 15:04:05 g

  • python数据可视化plt库实例详解

    先看下jupyter和pycharm环境的差别 左边是jupyter----------------------------------------------------------右边是pycharm 以下都是使用pycharm环境 1.一个窗口画出一个线性方程 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,1,11)# 从0到1,个数为11的等差数列 print(x) y = 2*x plt.plo

随机推荐