在 python 中生成基于时间间隔的时间戳
Generate interval based timestamps in python
什么是生成时间间隔为 5 分钟的时间戳序列的好方法,开始时间为 09:10:00,结束时间为 15:30:00
我知道我可以像下面那样对其进行硬编码(包含所有条目,但必须有一种干净的方法,我可以只给出间隔。
times=[pd.to_datetime(i).time() for i in '10:15:00','10:15:05','10:15:10','10:15:15','10:15:20','15:25:00','15:30:00']
我试过了
datetime_range(datetime.time(09,15,00), datetime.time(15,30,00), timedelta(minutes=5))
但这给出了 SyntaxError: invalid token
What could be a good way to generate timestamp series for 5 minute interval with a start time of say 09:10:00 and end time of 15:30:00
一个简单的循环就可以解决问题:
from datetime import datetime, time, timedelta
times = []
ts = datetime(2017, 7, 17, 9, 10, 0)
while ts <= datetime(2017, 7, 17, 15, 30, 0):
times.append(time(ts.hour, ts.minute, ts.second))
ts += timedelta(minutes=5)
开始使用 datetime 对象的原因是它们支持 timedelta 对象,可以缩短您的问题。从那里,使用 time(ts.hour, ts.minute, ts.second)
.
很容易转换为 time 对象
这个怎么样?
times = [(datetime.datetime(2017, 7, 17, 9, 10, 0) + datetime.timedelta(minutes=5*x)).time() for x in range(5)]
它有点长,但它看起来像你想要的那样全部排在一条线上。当然,您可以通过导入您需要的函数而不是整个模块来解决这个问题。
什么是生成时间间隔为 5 分钟的时间戳序列的好方法,开始时间为 09:10:00,结束时间为 15:30:00
我知道我可以像下面那样对其进行硬编码(包含所有条目,但必须有一种干净的方法,我可以只给出间隔。
times=[pd.to_datetime(i).time() for i in '10:15:00','10:15:05','10:15:10','10:15:15','10:15:20','15:25:00','15:30:00']
我试过了
datetime_range(datetime.time(09,15,00), datetime.time(15,30,00), timedelta(minutes=5))
但这给出了 SyntaxError: invalid token
What could be a good way to generate timestamp series for 5 minute interval with a start time of say 09:10:00 and end time of 15:30:00
一个简单的循环就可以解决问题:
from datetime import datetime, time, timedelta
times = []
ts = datetime(2017, 7, 17, 9, 10, 0)
while ts <= datetime(2017, 7, 17, 15, 30, 0):
times.append(time(ts.hour, ts.minute, ts.second))
ts += timedelta(minutes=5)
开始使用 datetime 对象的原因是它们支持 timedelta 对象,可以缩短您的问题。从那里,使用 time(ts.hour, ts.minute, ts.second)
.
这个怎么样?
times = [(datetime.datetime(2017, 7, 17, 9, 10, 0) + datetime.timedelta(minutes=5*x)).time() for x in range(5)]
它有点长,但它看起来像你想要的那样全部排在一条线上。当然,您可以通过导入您需要的函数而不是整个模块来解决这个问题。