Python按小时和分钟划分数据子集,忽略日期

Python按小时和分钟划分数据子集,忽略日期,python,datetime,subset,Python,Datetime,Subset,我有一个格式为“20121002_1639”的图像时间戳列表(“%Y%m%d_%H%m”) 我想创建一个函数,它接收这些时间戳的列表,并排除在这些时间戳之间拍摄的图像 1500(下午3:00)和1700(下午5:00)。但是,当我尝试只解析字符串的%H%M部分时,它会自动将这些日期时间分配给日期19000101_1500和19000101_1700。因此,我需要创建只包含小时和分钟但与日期无关的对象 伪代码如下所示: import datetime as dt # example dateti

我有一个格式为“20121002_1639”的图像时间戳列表(“%Y%m%d_%H%m”)

我想创建一个函数,它接收这些时间戳的列表,并排除在这些时间戳之间拍摄的图像 1500(下午3:00)和1700(下午5:00)。但是,当我尝试只解析字符串的%H%M部分时,它会自动将这些日期时间分配给日期19000101_1500和19000101_1700。因此,我需要创建只包含小时和分钟但与日期无关的对象

伪代码如下所示:

import datetime as dt

# example datetime string

datestrings = ['20121002_1639', '20111101_1229', '20160424_1502', '20170328_1100']

Start_time = dt.datetime.strptime('1500', '%H%M')
End_time = dt.datetime.strptime('1700', '%H%M')

good_times = []

for time in datestrings:

    if dt.datetime.strptime(time[9:13], '%H%M') is between(Start_time, End_time):
         continue
    else: 
         good_times.append(time)

您只能使用
datetime
对象中的时间部分,为此,请使用
.time()
方法。因此,您不需要只解析给定字符串的一部分,而是解析所有字符串,然后再将其作为时间部分

datestrings = ['20121002_1639', '20111101_1229', '20160424_1502', '20170328_1100']

Start_time = dt.datetime.strptime('1500', '%H%M').time()
End_time = dt.datetime.strptime('1700', '%H%M').time()

good_times = []

for time in datestrings:
    if not (Start_time <= dt.datetime.strptime(time, '%Y%m%d_%H%M').time() < End_time):
        good_times.append(time)

print(good_times)  # ['20111101_1229', '20170328_1100']
Start_time = 1500
End_time = 1700
for time in datestrings:
    if not (Start_time <= int(time.split("_")[-1]) < End_time):
        good_times.append(time)