如何使用dateutil创建只排除结束时间戳的rrule?我需要创建一个自定义函数吗?还是有一种方法可以在本机上创建它?
下面是一个例子

rule = rrule.rrule(rule.HOURLY,tsstart=somedate,until=somedate_four_hours_later)

我希望输出排除somedate_four_hours_later并且只生成4个时间戳,somedate,somedate+1小时,等等。

最佳答案

一种方法是使用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中排除它。

关于python - 如何获取rrule.between()仅包含开始时间戳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38213018/

10-11 20:44