你的逻辑有问题,我说的是按照给出的示例,比如0时至1时,如果有个时间点刚好是整点1:00:00,那么这个时间点将会被0时至1时以及1时至2时的计数都会算进去,这样就重复了
时间: 2024-02-12 19:05:08 浏览: 99
非常抱歉,我理解有误。如果要避免重复计算,可以在代码中对时间进行取整处理,比如将时间戳转换为整点的时间戳。具体实现可以参考下面的代码:
```python
import datetime
# 获取当前时间
now = datetime.datetime.now()
# 将时间取整为整点
now = now.replace(minute=0, second=0, microsecond=0)
# 统计每个时间段的个数
time_count = {}
for i in range(24):
time_count[now.strftime("%H:%M:%S")] = 0
now += datetime.timedelta(hours=1)
# 计算数据中每个时间段的个数
data = ["2021-08-01 01:30:00", "2021-08-01 01:45:00", "2021-08-01 02:15:00"]
for item in data:
time_str = datetime.datetime.strptime(item, "%Y-%m-%d %H:%M:%S").strftime("%H:%M:%S")
time_hour = datetime.datetime.strptime(item, "%Y-%m-%d %H:%M:%S").hour
if time_hour == 0:
time_count[time_str] += 1
else:
time_count[time_str] += 1 if time_hour <= int(time_str[:2]) else 0
print(time_count)
```
这里的 `replace` 方法可以将分钟、秒、微秒等部分设置为 0,从而将时间取整为整点。在统计每个时间段的个数时,先初始化一个字典,然后遍历数据中的每个时间,将其转换为整点时间,并获取其小时数。如果小时数为 0,则在字典中相应的时间段计数器加 1;否则,只有当该时间在当前小时之前才会计数。最后输出每个时间段的个数即可。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)