我有两个约会,就像:
date_a = datetime.datetime(2016, 8, 9, 8, 24, 30, 993352)
date_b = datetime.datetime(2016, 8, 9, 7, 24, 30, 993352)
我想要的是获取时间戳列表,这两个日期之间有五分钟的间隔。使用以上两个日期,结果将是:
five_min_timestamps = [
datetime.datetime(2016, 8, 9, 7, 25, 0, 0)
datetime.datetime(2016, 8, 9, 7, 30, 0, 0)
datetime.datetime(2016, 8, 9, 7, 35, 0, 0)
datetime.datetime(2016, 8, 9, 7, 45, 0, 0)
datetime.datetime(2016, 8, 9, 7, 55, 0, 0)
datetime.datetime(2016, 8, 9, 8, 00, 0, 0)
datetime.datetime(2016, 8, 9, 8, 05, 0, 0)
datetime.datetime(2016, 8, 9, 8, 10, 0, 0)
datetime.datetime(2016, 8, 9, 8, 15, 0, 0)
datetime.datetime(2016, 8, 9, 8, 20, 0, 0)
]
我仍在尝试弄清楚如何实现一个函数(非常 pythonic),就像上面的描述一样发出时间戳。
要求是这两个日期(date_a 和 date_b)之间的范围将大于或小于该示例中的范围。因此,获取一整天甚至一周之间的间隔应该包含在该函数中。
请您参考如下方法:
不是非常 pythonic,但干净简洁:
from datetime import timedelta
delta = timedelta(minutes=5)
five_min_timestamps = []
date_x = date_a
while date_x < date_b:
date_x += timedelta(minutes=5)
five_min_timestamps.append(date_x)
另一种选择是使用列表理解:
intervals = divmod((date_b - date_a).total_seconds(), 300)
five_min_timestamps = [date_a + i * datetime.timedelta(minutes=5) for i in range(intervals)]
intervals 变量显示您需要在这个时间跨度内有多少个间隔(日期之间的差异除以 300)。
或者用一条语句:
five_min_timestamps = [
date_a + i * datetime.timedelta(minutes=5)
for i in range(
divmod((date_b - date_a).total_seconds(), 300))]
