将日期和15分钟的时间块编号转换为完整的datetime

问题描述

如果我们将一天的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