python-dateutil包

傅增
2023-12-01

我用dateutil包主要是用来解析时间

 

安装

用pip安装

pip install python-dateutil

parse

字符串可以很随意,可以是任意字符串,汉字,英文,数字等等

 
>>> from dateutil.parser import parse
>>> parse("Apr.10")   # 默认年份是系统年份
datetime.datetime(2018, 4, 10, 0, 0)
>>> parse("20180410")  # 注意日期为8位
>>> parse("04-10")
datetime.datetime(2018, 4, 10, 0, 0)
>>> parse("10:00:00")    # 默认日期为系统日期
datetime.datetime(2018, 4, 10, 10, 0)
>>> parse("10:28:36")
datetime.datetime(2018, 4, 10, 10, 28, 36)
>>> parse("2018-04-09 10:28:36") #可以更改为你想在的日期
datetime.datetime(2018, 4, 9, 10, 28, 36)

 

rrule

class dateutil.rrule.rrule(freq, dtstart=None, interval=1, wkst=None, count=None, until=None, bysetpos=None, bymonth=None, bymonthday=None, byyearday=None, byeaster=None, byweekno=None, byweekday=None, byhour=None, byminute=None, bysecond=None, cache=False)

其中
freq:必须是 YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY中的一个

 

dtstart,until:是开始和结束时间。

 

cache:如果给定,它必须是一个布尔值,指定启用或禁用缓存结果。如果您将多次使用相同的rrule实例,启用缓存将显着提高性能。
dtstart:循环开始。除了作为重复发生的基础之外,最终重现实例中缺少的参数也将从此日期提取。如果没有给出,将使用datetime.now()。
interval:每次频繁迭代之间的时间间隔。例如,使用YEARLY时,间隔2意味着每两年一次,但是每小时一次,意味着每两个小时一次。默认的时间间隔是1。
WKST:本周开始日期。必须是MO,TU,WE常量或整数之一,指定一周中的第一天。这会影响每周周期的重现。默认的一周开始时间是从calendar.firstweekday()获得的,并且可以通过calendar.setfirstweekday()进行修改。
count:将会产生多少次事件。

util:如果给定,这必须是一个日期时间实例,它将指定重复的限制。规则中的最后一次重复是最大日期时间小于或等于until参数中指定的值 。

byxxx:指定匹配的周期。比如byweekday=(MO,TU)则只有周一周二的匹配。byweekday可以指定MO,TU,WE,TH,FR,SA,SU。即周一到周日。

【noted】从2.5.0版开始,根据RFC-5545 Sec中的规定,不再使用until关键字和count关键字。3.3.10。

【noted】落在无效日期和时间上的重复实例被忽略而不是被强制:
复发规则可能会生成带有无效日期(例如2月30日)或不存在的本地时间(例如,当地时间在凌晨1点向前移动一个小时的上午1:30)的重复实例。这样的重复实例必须被忽略,并且不能被计为重复集合的一部分。

>>> from dateutil.rrule import *
>>> from datetime import datetime
>>> start_date = datetime(2017,12,31)
>>> list(rrule(freq=MONTHLY,count=4,dtstart=start_date))
[datetime.datetime(2017, 12, 31, 0, 0), datetime.datetime(2018, 1, 31, 0, 0), datetime.datetime(2018, 3, 31, 0, 0), datetime.datetime(2018, 5, 31, 0, 0)

默认去掉了2月与4月

list(rrule(DAILY,interval=3,dtstart=parse('2018-04-01'),until=parse('2018-04-10'))) #间隔为3
[datetime.datetime(2018, 4, 1, 0, 0), datetime.datetime(2018, 4, 4, 0, 0), datetime.datetime(2018, 4, 7, 0, 0), datetime.datetime(2018, 4, 10, 0, 0)]
>>> list(rrule(DAILY,count=3,dtstart=parse('2018-04-01'),until=parse('2018-04-10'))) #间隔为3
[datetime.datetime(2018, 4, 1, 0, 0), datetime.datetime(2018, 4, 2, 0, 0), datetime.datetime(2018, 4, 3, 0, 0)]

 

 类似资料: