首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两次间隔5分钟的生成列表

两次间隔5分钟的生成列表
EN

Stack Overflow用户
提问于 2020-03-25 14:31:31
回答 2查看 2.4K关注 0票数 2

我有以下字符串:

代码语言:javascript
复制
start = "07:00:00"
end = "17:00:00"

如何在两次之间生成5分钟间隔的列表?

代码语言:javascript
复制
["07:00:00","07:05:00",...,"16:55:00","17:00:00"]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-25 14:43:15

这对我来说是可行的,我相信你可以想办法把结果放到列表中,而不是打印出来:

代码语言:javascript
复制
>>> import datetime
>>> start = "07:00:00"
>>> end = "17:00:00"
>>> delta = datetime.timedelta(minutes=5)
>>> start = datetime.datetime.strptime( start, '%H:%M:%S' )
>>> end = datetime.datetime.strptime( end, '%H:%M:%S' )
>>> t = start
>>> while t <= end :
...     print datetime.datetime.strftime( t, '%H:%M:%S')
...     t += delta
... 
07:00:00
07:05:00
07:10:00
07:15:00
07:20:00
07:25:00
07:30:00
07:35:00
07:40:00
07:45:00
07:50:00
07:55:00
08:00:00
08:05:00
08:10:00
08:15:00
08:20:00
08:25:00
08:30:00
08:35:00
08:40:00
08:45:00
08:50:00
08:55:00
09:00:00
09:05:00
09:10:00
09:15:00
09:20:00
09:25:00
09:30:00
09:35:00
09:40:00
09:45:00
09:50:00
09:55:00
10:00:00
10:05:00
10:10:00
10:15:00
10:20:00
10:25:00
10:30:00
10:35:00
10:40:00
10:45:00
10:50:00
10:55:00
11:00:00
11:05:00
11:10:00
11:15:00
11:20:00
11:25:00
11:30:00
11:35:00
11:40:00
11:45:00
11:50:00
11:55:00
12:00:00
12:05:00
12:10:00
12:15:00
12:20:00
12:25:00
12:30:00
12:35:00
12:40:00
12:45:00
12:50:00
12:55:00
13:00:00
13:05:00
13:10:00
13:15:00
13:20:00
13:25:00
13:30:00
13:35:00
13:40:00
13:45:00
13:50:00
13:55:00
14:00:00
14:05:00
14:10:00
14:15:00
14:20:00
14:25:00
14:30:00
14:35:00
14:40:00
14:45:00
14:50:00
14:55:00
15:00:00
15:05:00
15:10:00
15:15:00
15:20:00
15:25:00
15:30:00
15:35:00
15:40:00
15:45:00
15:50:00
15:55:00
16:00:00
16:05:00
16:10:00
16:15:00
16:20:00
16:25:00
16:30:00
16:35:00
16:40:00
16:45:00
16:50:00
16:55:00
17:00:00
>>>
票数 2
EN

Stack Overflow用户

发布于 2020-03-25 14:44:18

Try

代码语言:javascript
复制
# import modules
from datetime import datetime, timedelta

# Create starting and end datetime object from string
start = datetime.strptime("07:00:00", "%H:%M:%S")
end = datetime.strptime("17:00:00", "%H:%M:%S")

# min_gap
min_gap = 5

# compute datetime interval
arr = [(start + timedelta(hours=min_gap*i/60)).strftime("%H:%M:%S")
       for i in range(int((end-start).total_seconds() / 60.0 / min_gap))]
print(arr)
# ['07:00:00', '07:05:00', '07:10:00', '07:15:00', '07:20:00', '07:25:00', '07:30:00', ..., '16:55:00']

解释

  1. 首先,您需要将string日期转换为datetime对象。是绞合时间干的!
  2. 然后,我们将找到开始日期和结束日期之间的分钟数。这个讨论解决了它!我们可以这样做:
代码语言:javascript
复制
(end-start).total_seconds() / 60.0

然而,在我们的例子中,我们只想迭代每一个n分钟。所以,在我们的loop中,我们需要用n除以它。

此外,由于我们将迭代这个时间数,我们需要将int转换为for循环。其结果是:

代码语言:javascript
复制
int((end-start).total_seconds() / 60.0 / min_gap)
  1. 然后,在循环的每个元素上,将分钟数添加到初始日期时间。铁三角洲函数已被设计为。作为参数,我们指定要添加的小时数:min_gap*i/60
  2. 最后,我们使用datetime将这个绞合时间对象转换回一个字符串对象。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60850957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档