【发布时间】:2021-03-20 09:42:17
【问题描述】:
所以,我想计算时间差;文件看起来像这样
| id | message_id | send_date | status |
|---|---|---|---|
| 0 | 5f74b996a2b7e | 2020-10-01 00:00:07 | sent |
| 1 | 5f74b996a2b7e | 2020-10-01 00:00:09 | delivered |
| 2 | 5f74b99e85b3c | 2020-10-02 02:00:14 | sent |
| 3 | 5f74b99e85b3c | 2020-10-02 02:01:16 | delivered |
| 4 | 5f74b99e85b3c | 2020-10-02 08:06:49 | read |
| 5 | 5f74b996a2b7e | 2020-10-02 15:16:32 | read |
| 6 | 5f9d97ff1af9e | 2020-10-14 13:45:43 | sent |
| 7 | 5f9d97ff1af9e | 2020-10-14 13:45:45 | delivered |
| 8 | 5f9d97ff1af9e | 2020-10-14 13:50:48 | read |
| 9 | 5f74b9a35b6c5 | 2020-10-16 19:01:19 | sent |
| 10 | 5f74b9a35b6c5 | 2020-10-16 19:01:25 | deleted |
里面是递增的id,message_id是每条消息唯一的,send_date是时间,status是消息状态(有5个状态:send、delivered、read、failed、deleted)。
我想计算消息发送然后传递的时间差,如果传递然后读取。
我知道这样的东西很方便,但我不确定如何将它唯一地分配给每个 message_id
from datetime import datetime
s1 = '2020-10-14 13:45:45'
s2 = '2020-10-14 13:50:48' # for example
FMT = '%Y-%m-%d %H:%M:%S'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
print(tdelta)
Ref: https://stackoverflow.com/questions/3096953/how-to-calculate-the-time-interval-between-two-time-strings
预期的输出是,
| message_id | delivered_diff | read_diff | deleted_diff | |
|---|---|---|---|---|
| 0 | 5f74b996a2b7e | 00:00:02 | 1 day, 15:16:23 | |
| 1 | 5f74b99e85b3c | 00:01:02 | 6:05:33 | |
| 2 | 5f9d97ff1af9e | 00:00:02 | 0:05:03 | |
| 3 | 5f74b9a35b6c5 | 0:00:06 |
【问题讨论】:
-
你能分享你的代码和预期的输出吗?
-
我已经包含了一些需要澄清的内容。谢谢!
标签: python-3.x time