将一个日期和一个 15 分钟的时间块数转换为完整的日期时间

Convert a date and a 15 minutes time block number to complete datetime

如果我们将一天的 24 小时时间范围划分为 15 分钟的区间或块,我们将得到 96 个块。因此,块=1 表示 00:00:00 小时到 00:14:00 小时,block=96 表示 23:45:00 小时到 23:59:00 小时。

我有两个输入,一个日期(比如,2020-07-25)和一个十五分钟的块号,可以是 1 到 96 之间的任何数字(比如,2,即 00:15:00 to 00:30:00),从这些我想生成一个完整的日期时间,例如 2020-07-25 00:15:00

如何有效地做到这一点?

您可以添加带有 space 的两个输入,例如 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 中的所有时间,定义将 block_number 映射到时间的字典 d, 获取 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