如何解决根据Python中的间隔将时间范围分为多个时间段
我有一个时间范围和一个间隔,我需要根据间隔值将时间范围分为多个时间段。
例如,时间范围是9:30到11:30,间隔是30,则输出时间段应在列表中作为日期时间对象
输出:
readData(String key) async {
final preferences = await SharedPreferences.getInstance();
return jsonDecode(preferences.getString(key));
}
解决方法
您可以通过添加datetime
个对象来对timedelta
个对象进行算术运算。
如果每个周期的间隔不是总数的精确除数,则可能需要确切地决定需要采取什么行为,但是在这种情况下,本示例将给出最后的较短周期。
import datetime
tstart = datetime.datetime(2020,8,24,9,30)
tend = datetime.datetime(2020,11,30)
interval = datetime.timedelta(minutes=30)
periods = []
period_start = tstart
while period_start < tend:
period_end = min(period_start + interval,tend)
periods.append((period_start,period_end))
period_start = period_end
print(periods)
这给出了(为了便于阅读,插入了换行符):
[(datetime.datetime(2020,30),datetime.datetime(2020,10,0)),(datetime.datetime(2020,0),30)),30))]
对于所需的字符串输出格式,可以执行以下操作:
def format_time(dt):
return dt.strftime("%Y-%m-%d %H:%M")
print(['{} - {}'.format(format_time(start),format_time(end))
for start,end in periods])
给出:
['2020-08-24 09:30 - 2020-08-24 10:00','2020-08-24 10:00 - 2020-08-24 10:30','2020-08-24 10:30 - 2020-08-24 11:00','2020-08-24 11:00 - 2020-08-24 11:30']
,
bins = pd.date_range(start='2020-08-24 9:30',end='2020-08-24 11:30',freq='30min').astype(str)
res = [' - '.join(x) for x in zip(bins[: -1],bins[1: ])]
print(res)
输出:
['2020-08-24 09:30:00 - 2020-08-24 10:00:00','2020-08-24 10:00:00 - 2020-08-24 10:30:00','2020-08-24 10:30:00 - 2020-08-24 11:00:00','2020-08-24 11:00:00 - 2020-08-24 11:30:00']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。