zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python中dateutil库用法详解

Python 详解 用法
2023-09-11 14:15:15 时间

dateutil库是一个处理时间的工具库。本地自带,一般不用再次安装。

1、直接在某个时间点上直接修改年份、月份等信息。

示例代码:

from dateutil.relativedelta import relativedelta
from datetime import datetime

now_time = datetime.now()
print(now_time)

# 将当前时间年份增加3年或减少3年,
# alter_year = relativedelta(years=-3)
alter_year = relativedelta(years=3)
# aa = now_time - alter_year
aa = now_time + alter_year
print(aa)
# months, weeks, days, hours, minutes, seconds, microseconds方法同years
"""官方文档解释:
years, months, weeks, days, hours, minutes, seconds, microseconds:
            Relative information, may be negative (argument is plural); adding
            or subtracting a relativedelta with relative information performs
            the corresponding arithmetic operation on the original datetime value
            with the information in the relativedelta.
"""
# 将当前时间年份直接更改为某个具体年份
alter_year = relativedelta(year=2010)
# bb = now_time - alter_year
bb = now_time + alter_year
print(bb)
# month, day, hour, minute, second, microsecond方法同year
""" 官方文档解释:
year, month, day, hour, minute, second, microsecond:
            Absolute information (argument is singular); adding or subtracting a
            relativedelta with absolute information does not perform an arithmetic
            operation, but rather REPLACES the corresponding value in the
            original datetime with the value(s) in relativedelta.
"""

运行结果:

2、日期转换,字符串日期转为datetime

示例代码:

from dateutil.parser import parse  # 日期解析器

print(parse("Jul 15 2022 13:00:36"))  # 月份也可全称,如july,January
print(parse('20220717'))
print(parse('2022-07-17'))
print(type(parse('2022-07-17')))

运行结果:

3、计算时间差:如计算一个人出生到现在的时间

示例代码:

from dateutil.relativedelta import relativedelta
from datetime import date

# 1.第一种方式
today = date.today()
print(today)
birthday = date(year=2020, month=1, day=1)  # 假设出生日期为2020-1-1
print(birthday)
diffday = (today - birthday)  # 今天和出生日期计算相差天数
print(diffday)
print(diffday.days)  # 只能计算出天

# 2.第二种方式
# 下面可计算两个日期中间相差几年,几个月和几天
diff = relativedelta(today, birthday)
print(diff)  # relativedelta(years=+2, months=+7, days=+19)  2岁7个月19天
print(diff.years)  # 年
print(diff.months)  # 月
print(diff.days)  # 日

运行结果:

4、获取接下来每周周几的日期

示例代码:

from dateutil.rrule import rrule, WEEKLY
from datetime import date, datetime

next_wednesday = date(year=2022, month=8, day=20)  # 设置下一个周六,2022-08-20
# next_wednesday = datetime(2022, 8, 20)
data = list(rrule(WEEKLY, count=10, dtstart=next_wednesday))
# 上面rrule函数中WEEKLY表示频次,即每周,count表示计算的数据数为10个
# dtstart即起始日 byweekday可以指定MO,TU,WE,TH,FR,SA,SU。即周一到周日。
for one in data:
    print(one, '------>', one.strftime('%Y-%m-%d'))

运行结果:

具体更多功能详见源码。