最近在分析日志的时候遇到这样一个需求。统计每小时的角色创建总数和每10分钟的在线人数。需求具体实现不做讨论, 这里主要记录如何将日志时间离散到相应区间的问题。先解释每小时的概念,按24小时算,一天可以分这么几个时间点:00:00:00,01:00:00,02:00:00,...,23:00:00。那么在[N小时0分1秒,N+1小时0分0秒](注意是闭区间),这段时间是要划分到N+1小时的, 即, 从12:00:01开始到13:00:00结束这段时间归并13:00:00,特别的,23:00:01至次日00:00:00是属于次日的00:00:00。
【方案1】时间取到小时, 分钟和秒全部用0代替,这样造成的问题是区间划分不正确,[00:00:00,00:59:59]被划分到时间点00:00:00上,与需求方的意思相违背(这里真的要吐槽一下, 代码开始之前一定要做好需求分析, 大部分的统计结果不合适都是因为需求分析没有做好而导致的);
【方案2】通过判断分钟和秒是否为0,对hour进行操作,如果都为0,hour=N;如果不为0,hour=N+1。这里的问题在于,在23点时并不能单纯的做加1操作;
【Final】使用datetime模块中的timedelta, 不用判断分钟和秒是否为0,也不用判断是不是在23点,代码如下:
def time_to