我有一个datetime.datetime实例,d和一个datetime.timedelta实例td,我正在尝试编写一个将范围(d,d td)分解为[(d,x1),(x1,x2)的函数. ..,(xn,d td)],xn变量全部与小时对齐.
例如,如果
d = datetime.datetime(2012, 9, 8, 18, 53, 34)
td = datetime.timedelta(hours=2, minutes=34, seconds=5)
我想要一份清单
[(datetime.datetime(..., 18, 53, 34), datetime.datetime(..., 19, 0, 0)),
(datetime.datetime(..., 19, 0, 0), datetime.datetime(..., 20, 0, 0)),
(datetime.datetime(..., 20, 0, 0), datetime.datetime(..., 21, 0, 0)),
(datetime.datetime(..., 21, 0, 0), datetime.datetime(..., 21, 27, 39))]
任何人都可以建议一个很好的,Pythonic,完成这个的方法?
解决方法:
使用dateutil,您可以使用rrule生成列表:
import dateutil.rrule as rrule
import datetime
def hours_aligned(start, end, inc = True):
if inc: yield start
rule = rrule.rrule(rrule.HOURLY, byminute = 0, bysecond = 0, dtstart=s