在Python中获取两个日期之间的所有列表元素

时间:2020-06-26 12:43:11

标签: python-3.x list

python列表如下

['2020-06-26 15:23:11','2020-06-26 15:20:31','2020-06-26 08:24:13','2020-06-25 18 :32:17','2020-06-25 18:19:24','2020-06-25 18:12:36','2020-06-25 17:01:28']

我需要在两个日期元素之间获取元素。

python代码是这样的:

startdate = '2020-06-25 18:19:24'
enddate = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")
    
event = ['2020-06-26 15:23:11', '2020-06-26 15:20:31', '2020-06-26 08:24:13', '2020-06-25 18:32:17', '2020-06-25 18:19:24', '2020-06-25 18:12:36', '2020-06-25 17:01:28']

initime = []

for event>startdate and event<=endate:
    intime.append(format(event)) 

1 个答案:

答案 0 :(得分:1)

您很近。几件事...

  • 您需要将所有内容都放入datetime对象以进行正确比较
  • 您可以在这里使用列表推导来完成大部分工作
  • 如果对输入列表进行排序,则下面的示例可以提高效率,但是除非您的输入列表很大,否则不会起作用。

from datetime import datetime

# step 1:  get both of your cutoffs into datetime objects
startdate_str = '2020-06-25 18:19:24'
start_date = datetime.strptime(startdate_str, "%Y-%m-%d %H:%M:%S")
end_date = datetime.now()
    
event = ['2020-06-26 15:23:11', '2020-06-26 15:20:31', '2020-06-26 08:24:13', '2020-06-25 18:32:17', '2020-06-25 18:19:24', '2020-06-25 18:12:36', '2020-06-25 17:01:28']

# step 2:  Convert the strings in your list to datetime elements
event_dt = [datetime.strptime(t, "%Y-%m-%d %H:%M:%S") for t in event]

# Step 3:  use another list comprehension to test each element
in_window = [dt for dt in event_dt if start_date <= dt and dt <= end_date]

for dt in in_window:
    print(dt)

收益:

2020-06-26 08:24:13
2020-06-25 18:32:17
2020-06-25 18:19:24
[Finished in 0.1s]
相关问题