python中dateutil库用法详解

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'))

运行结果:

具体更多功能详见源码。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
collections是Python内置的一个模块,它提供了一些有用的类,用于处理Python的集合类型。这些类包括:Counter、defaultdict、deque、namedtuple等。 1. Counter类 Counter类是一个用于计数的容器,它可以统计元素出现的次数。可以使用它来创建一个字典,其字典的键是元素,值是元素的数量。Counter类的用法如下: ```python from collections import Counter # 创建一个Counter对象 c = Counter(['a', 'b', 'c', 'a', 'b', 'a']) # 统计元素出现的次数 print(c) # Counter({'a': 3, 'b': 2, 'c': 1}) # 统计前n个出现次数最多的元素 print(c.most_common(2)) # [('a', 3), ('b', 2)] ``` 2. defaultdict类 defaultdict类是一个字典类型,它可以自动为不存在的键分配一个默认值。当使用一个不存在的键时,它会自动创建一个默认值,并返回它。defaultdict类的用法如下: ```python from collections import defaultdict # 创建一个defaultdict对象 d = defaultdict(int) # 添加键值对 d['a'] = 1 d['b'] = 2 # 访问不存在的键 print(d['c']) # 0 ``` 3. deque类 deque类是一个双向队列,它可以在队列的两端进行插入和删除操作。deque类的用法如下: ```python from collections import deque # 创建一个deque对象 d = deque() # 在队列的左边插入元素 d.appendleft(1) d.appendleft(2) # 在队列的右边插入元素 d.append(3) d.append(4) # 访问队列的元素 print(d) # deque([2, 1, 3, 4]) # 从队列的左边删除元素 print(d.popleft()) # 2 # 从队列的右边删除元素 print(d.pop()) # 4 ``` 4. namedtuple类 namedtuple类是一个工厂函数,它可以用来创建一个具有字段名的元组。该类返回的是一个元组子类,它可以像普通元组一样访问元素,但也可以使用字段名来访问元素。namedtuple类的用法如下: ```python from collections import namedtuple # 定义一个namedtuple类型 Point = namedtuple('Point', ['x', 'y']) # 创建一个Point对象 p = Point(1, 2) # 访问元素 print(p.x) # 1 print(p.y) # 2 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值