问题描述
如果我们将一天的24小时时间范围划分为15分钟的垃圾箱或区块,则会得到96个区块。因此,block = 1代表00:00:00
小时至00:14:00
小时,block=96
代表23:45:00
小时至23:59:00
小时。
我要从中输入两个信息,一个是日期(例如2020-07-25
),另一个是15分钟的块号,该数字可以是1到96之间的任何数字(例如2即00:15:00 to 00:30:00
)。产生像2020-07-25 00:15:00
如何有效地做到这一点?
解决方法
您可以使用空格output=input1+' ' + input2
添加两个输入,然后将其转换为日期时间
import datetime
value=datetime.datetime.strptime(output,format='%Y-%m-%d %H:%M:%S')
,
这应该可以解决问题,您只需根据区块编号在特定日期添加分钟数即可。
from datetime import datetime,timedelta
def operation(date,block):
return date + timedelta(minutes=15 * (block - 1))
date = datetime.strptime("2020-07-25","%Y-%m-%d")
block = 2
print(operation(date,block))
,
在l
中生成所有时间,定义将d
映射到时间的字典block_number
,
接受2个输入,并根据它们输入最终的日期时间:
from datetime import datetime
l = [str(h).zfill(2) + ':' + str(m).zfill(2) + ':' + '00'
for h in range(24)
for m in (0,15,30,45)
]
d = {block_number: t for block_number,t in enumerate(l)}
date_str = "2020-07-25"
block_number = 5
dt = date_str + ' ' + d.get(block_number)
date_time_obj = datetime.strptime(dt,'%Y-%m-%d %H:%M:%S')
print(date_time_obj)
制作:
2020-07-25 01:15:00