如何让 rrule.between() 只包含开始时间戳
How to get rrule.between() to only include start timestamp
我如何使用 dateutil 创建一个仅排除结束时间戳的规则?我是否必须创建一个自定义函数,或者有没有办法在本地执行此操作?
这里有一个例子
rule = rrule.rrule(rule.HOURLY,tsstart=somedate,until=somedate_four_hours_later)
我希望输出排除 somedate_four_hours_later
并且只生成 4 个时间戳,somedate,somedate+1 小时等
您可以设置计数:
In [1]: from dateutil import rrule
In [2]: from datetime import datetime, timedelta
In [3]: st = datetime(2016, 7, 5, 23, 30)
In [4]: rule = rrule.rrule(rrule.HOURLY, st, count=4)
In [5]: print(list(rule))
[datetime.datetime(2016, 7, 5, 23, 30), datetime.datetime(2016, 7, 6, 0, 30), datetime.datetime(2016, 7, 6, 1, 30), datetime.datetime(2016, 7, 6, 2, 30)]
或使用 timedelta 在开始时增加三个小时:
from datetime import datetime, timedelta
st = datetime(2016, 7, 5, 23, 30)
rule = rrule.rrule(rrule.HOURLY, st, until=(st + timedelta(hours=3)))
执行此操作的一种方法是使用 rruleset
,它允许您根据需要组合重复规则和特定日期。在这种情况下,您要做的是将 until
日期设置为 exdate
(排除日期):
from dateutil import rrule
from datetime import datetime, timedelta
dtstart = datetime(2015, 1, 3, 12)
dtuntil = datetime(2015, 1, 3, 16)
rr = rrule.rrule(freq=rrule.HOURLY, dtstart=dtstart, until=dtuntil)
# Add your rrule to the ruleset, then exclude the until date from the rule set
rrset = rrule.rruleset()
rrset.rrule(rr)
l1 = list(rrset)
rrset.exdate(dtuntil)
l2 = list(rrset)
print(l1[-1]) # 2015-01-03 16:00:00
print(l2[-1]) # 2015-01-03 15:00:00
rrule
本身将包含 until
日期,但 exdate
会将其从 rruleset
中排除。
我如何使用 dateutil 创建一个仅排除结束时间戳的规则?我是否必须创建一个自定义函数,或者有没有办法在本地执行此操作?
这里有一个例子
rule = rrule.rrule(rule.HOURLY,tsstart=somedate,until=somedate_four_hours_later)
我希望输出排除 somedate_four_hours_later
并且只生成 4 个时间戳,somedate,somedate+1 小时等
您可以设置计数:
In [1]: from dateutil import rrule
In [2]: from datetime import datetime, timedelta
In [3]: st = datetime(2016, 7, 5, 23, 30)
In [4]: rule = rrule.rrule(rrule.HOURLY, st, count=4)
In [5]: print(list(rule))
[datetime.datetime(2016, 7, 5, 23, 30), datetime.datetime(2016, 7, 6, 0, 30), datetime.datetime(2016, 7, 6, 1, 30), datetime.datetime(2016, 7, 6, 2, 30)]
或使用 timedelta 在开始时增加三个小时:
from datetime import datetime, timedelta
st = datetime(2016, 7, 5, 23, 30)
rule = rrule.rrule(rrule.HOURLY, st, until=(st + timedelta(hours=3)))
执行此操作的一种方法是使用 rruleset
,它允许您根据需要组合重复规则和特定日期。在这种情况下,您要做的是将 until
日期设置为 exdate
(排除日期):
from dateutil import rrule
from datetime import datetime, timedelta
dtstart = datetime(2015, 1, 3, 12)
dtuntil = datetime(2015, 1, 3, 16)
rr = rrule.rrule(freq=rrule.HOURLY, dtstart=dtstart, until=dtuntil)
# Add your rrule to the ruleset, then exclude the until date from the rule set
rrset = rrule.rruleset()
rrset.rrule(rr)
l1 = list(rrset)
rrset.exdate(dtuntil)
l2 = list(rrset)
print(l1[-1]) # 2015-01-03 16:00:00
print(l2[-1]) # 2015-01-03 15:00:00
rrule
本身将包含 until
日期,但 exdate
会将其从 rruleset
中排除。