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