python-dateutil
是一个 Python 第三方库,它提供了一系列强大的扩展来解析、操作、验证和格式化日期和时间。这个库是对 Python 标准库中 datetime
模块的补充,提供了许多实用的功能,比如解析各种格式的日期时间字符串、处理时区、计算相对日期(如“一个月前”或“下周三”)等。
安装
你可以通过 pip 来安装 python-dateutil
:
pip install python-dateutil
主要功能
-
解析日期时间字符串:
dateutil.parser.parse()
函数可以解析几乎所有常见的日期时间字符串格式,并返回一个datetime
对象。 -
处理时区:
dateutil.tz
模块提供了对时区的支持,包括 UTC 时区以及从 IANA 时区数据库(也称为 Olson 数据库)中读取的时区。 -
相对日期计算:
dateutil.relativedelta
模块提供了relativedelta
类,它可以用来计算两个日期之间的相对差异(如几个月、几天等),也可以用来从一个日期加上或减去这些相对量来生成新的日期。 -
假日和特殊日期:虽然
dateutil
本身不直接提供假日信息,但它可以与holidays
库等第三方库结合使用,以处理假日和特殊日期。 -
日期时间的格式化:虽然
dateutil
主要不是用于格式化(这通常是datetime
模块的任务),但它提供的解析和时区处理功能可以使得格式化变得更加容易和准确。
示例
解析日期时间字符串:
from dateutil import parserdate_str = "2023-04-01 15:30:00"
dt = parser.parse(date_str)
print(dt) # 输出:2023-04-01 15:30:00
处理时区:
from dateutil import tz
from datetime import datetimeutc_now = datetime.now(tz=tz.utc)
print(utc_now) # UTC 时间eastern = tz.gettz('America/New_York')
local_now = datetime.now(tz=eastern)
print(local_now) # 纽约东部时间
计算相对日期:
from dateutil.relativedelta import relativedelta
from datetime import datetimetoday = datetime.now()
one_month_ago = today - relativedelta(months=1)
print(one_month_ago) # 一个月前的日期next_friday = today + relativedelta(weekday=4) # 假设weekday=4是星期五(这取决于你的locale设置)
print(next_friday) # 下一个星期五的日期
请注意,relativedelta
的 weekday
参数的值可能因不同的系统和 Python 的 locale 设置而异。在某些系统上,星期一可能是 0,而在其他系统上可能是 1。因此,在使用时需要小心。