python - 如何在特定时间之间获取记录?
问题描述
假设我有一个从特定时间到特定时间(上午 8:20 到上午 12:20)的时间戳列表。如何仅获取时间从上午 8:20 到上午 9:20 的那些?
[2021-03-19 08:20:00.923000+00:00
2021-03-19 08:20:02.221000+00:00
2021-03-19 08:20:02.268000+00:00
2021-03-19 08:20:03.194000+00:00
2021-03-19 08:20:03.253000+00:00
2021-03-19 08:20:03.485000+00:00
2021-03-19 08:20:04.275000+00:00
2021-03-19 08:20:04.945000+00:00
2021-03-19 08:20:05.285000+00:00
2021-03-19 08:20:05.530000+00:00
2021-03-19 08:20:05.609000+00:00
2021-03-19 08:20:05.556000+00:00
2021-03-19 08:20:07.453000+00:00
2021-03-19 08:20:07.860000+00:00
2021-03-19 08:20:07.876000+00:00
2021-03-19 08:20:08.450000+00:00
2021-03-19 08:20:08.806000+00:00
2021-03-19 08:20:09.680000+00:00
2021-03-19 08:20:09.699000+00:00
2021-03-19 08:20:11.081000+00:00
.
.
. ]
我尝试使用:
lastHourDateTime = datetime.datetime.now() - datetime.timedelta(hours = 1)
print lastHourDateTime.strftime('%Y-%m-%d %H')
然而,这不是我所期待的。由于lastHourDatetime
has datetime.now
,所以我必须手动不断更改代码。如何获取上午 8:20 到上午 9:20 的时间戳记录?
解决方案
这个怎么样?
from dateutil import parser
timestamps = [
"2021-03-19 07:20:00.923000+00:00",
"2021-03-19 08:20:00.923000+00:00",
"2021-03-19 08:20:02.221000+00:00",
"2021-03-19 08:20:03.485000+00:00",
"2021-03-19 08:20:04.275000+00:00",
"2021-03-19 08:20:05.285000+00:00",
"2021-03-19 08:20:07.876000+00:00",
"2021-03-19 08:20:08.450000+00:00",
"2021-03-19 08:20:08.806000+00:00",
"2021-03-19 09:20:09.680000+00:00",
"2021-03-19 09:20:09.699000+00:00",
"2021-03-19 09:20:11.081000+00:00",
"2021-03-19 10:20:11.081000+00:00",
]
print("\n".join(t for t in timestamps if parser.parse(t).time().strftime("%H:%M") in ["08:20", "09:20"]))
输出:
2021-03-19 08:20:00.923000+00:00
2021-03-19 08:20:02.221000+00:00
2021-03-19 08:20:03.485000+00:00
2021-03-19 08:20:04.275000+00:00
2021-03-19 08:20:05.285000+00:00
2021-03-19 08:20:07.876000+00:00
2021-03-19 08:20:08.450000+00:00
2021-03-19 08:20:08.806000+00:00
2021-03-19 09:20:09.680000+00:00
2021-03-19 09:20:09.699000+00:00
2021-03-19 09:20:11.081000+00:00
编辑:
正如评论中指出的那样,如果您想在两者之间的任何时间匹配,请08:20 and 09:20
尝试以下操作:
from dateutil import parser
timestamps = [
"2021-03-19 07:20:00.923000+00:00",
"2021-03-19 08:20:00.923000+00:00",
"2021-03-19 08:20:02.221000+00:00",
"2021-03-19 08:20:03.485000+00:00",
"2021-03-19 08:20:04.275000+00:00",
"2021-03-19 08:20:05.285000+00:00",
"2021-03-19 08:20:07.876000+00:00",
"2021-03-19 08:21:08.450000+00:00",
"2021-03-19 08:30:08.806000+00:00",
"2021-03-19 08:56:08.806000+00:00",
"2021-03-19 09:09:09.680000+00:00",
"2021-03-19 09:20:09.680000+00:00",
"2021-03-19 09:26:09.699000+00:00",
"2021-03-19 09:58:11.081000+00:00",
"2021-03-19 10:20:11.081000+00:00",
]
print("\n".join(t for t in timestamps if "08:20" <= parser.parse(t).time().strftime("%H:%M") <= "09:20"))
for loop
或者如果你想拥有一个好老人:
for time_ in timestamps:
t = parser.parse(time_).time().strftime("%H:%M")
if "08:20" <= t <= "09:20":
print(time_)
输出:
2021-03-19 08:20:00.923000+00:00
2021-03-19 08:20:02.221000+00:00
2021-03-19 08:20:03.485000+00:00
2021-03-19 08:20:04.275000+00:00
2021-03-19 08:20:05.285000+00:00
2021-03-19 08:20:07.876000+00:00
2021-03-19 08:21:08.450000+00:00
2021-03-19 08:30:08.806000+00:00
2021-03-19 08:56:08.806000+00:00
2021-03-19 09:09:09.680000+00:00
2021-03-19 09:20:09.680000+00:00
2021-03-19 08:20:00.923000+00:00
2021-03-19 08:20:02.221000+00:00
2021-03-19 08:20:03.485000+00:00
2021-03-19 08:20:04.275000+00:00
2021-03-19 08:20:05.285000+00:00
2021-03-19 08:20:07.876000+00:00
2021-03-19 08:21:08.450000+00:00
2021-03-19 08:30:08.806000+00:00
2021-03-19 08:56:08.806000+00:00
2021-03-19 09:09:09.680000+00:00
2021-03-19 09:20:09.680000+00:00
推荐阅读
- reporting-services - 有没有办法将矩形内的所有内容与矩形一起移动?
- php - 如何解决 SQLSTATE[HY000]: General error: 2006 MySQL server has gone away?
- scala - lastIndex 不返回预期结果
- python-3.x - Scrapy - 是否可以从响应中提取有效负载请求
- c# - C# 中的多个基表不支持动态 SQL 生成
- python - 当 nargs='*' 时从 argparse 生成更好的帮助
- bootstrap-4 - Bootstrap 图标和文本对齐
- reactjs - 部署到 DigitalOcean 时 GitHub 操作失败
- reactjs - noob - 反应打字稿待办事项
- python-3.x - Numpy 中值计算未在 BarPlot 上表示,我如何表示值