【Python】基于datetime实现时间统计

时间格式为 年月日 时分秒,例如:
2023-10-10 15:45:36
2023-10-11 14:12:24
本文实现两个时间差值转化为#天#时#分#秒

时间格式处理,分别将“2023-10-10 15:45:36 ”的年月日时分秒数值取出,并转换为int格式,方便进行计算。

start_time = 2023-10-10 15:45:36 
stop_time = 2023-10-11 14:12:24

start__year = int(start_time[0:4])
start_month = int(start_time[5:7])
start_day = int(start_time[8:10])
start_hour = int(start_time[11:13])
start_min = int(start_time[14:16])
start_sed = int(start_time[17:19])

stop_year = int(stop_time[0:4])
stop_month = int(stop_time[5:7])
stop_day = int(stop_time[8:10])
stop_hour = int(stop_time[11:13])
stop_min = int(stop_time[14:16])
stop_sed = int(stop_time[17:19])

将两个时间的年月日时分秒分别进行减运算

year = stop_year - start_year
month = stop_month - start_month
day = stop_day - start_day
hour = stop_hour - start_hour
minute = stop_min - start_min
sed = stop_sed - start_sed

判断获得的差值大小,如果是大于0,则直接年月日时分秒直接使用差值;如果是小于0,则要进行借位减法。这里分情况考虑:
1.第1种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-09 18:49:30
此时,stop_time日期的时分秒都比start_time大,直接用两者差值即可作为时间总长

2.第2种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-09 18:19:30
此时,stop_time日期的分钟比start_time小,需要往时位借位,时位 - 1,(stop_time分位 + 60)- start_time的分位

hour1 = hour - 1
min1 = (stop_min + 60) - start_min

3.第3种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-09 18:39:10
此时,stop_time日期的秒位比start_time秒位小,需要往分钟位借位,分位-1,(stop_time秒为 + 60)- start_time的秒位

min1 = minute - 1
sed1 = (stop_sed + 60) - start_sed

4.第4种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-09 18:19:10
此时,stop_time日期的分位和秒位都比start_time小,分位相减时需要往时位借位,秒位相减时需要往分位借位

hour1 = hour - 1
min1 = (stop_min + 60) -start_min
sed1 = (stop_sed + 60) - start_sed
min2 = min1 - 1

5.第5种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-10 18:49:30
这种情况与第1种情况一样,只不过扩大了范围,stop_time的日时分秒均比start_time大,直接用差值作为时间总长

6.第6种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-10 16:40:30
此时,stop_time的日分秒位比start_time大,而时位比start_time时位小,计算需要往时位借位

day1 = day - 1
hour1 = (stop_hour + 24) - start_hour

7.第7种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-10 18:19:30
此时,stop_time的日时秒比start_time大,而分位比start_time小,计算需要往时位借位

hour1 = hour - 1
min1 = (stop_min + 60) - start_min

8.第8种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-10 18:39:10
此时,stop_time的日时分位比start_time大,秒位比start_time小,计算需要往分位借位

min1 = minute - 1
sed1 = (stop_sed + 60) - start_sed

9.第9种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-10 18:19:10
此时,stop_time的日时位比start_time大,而分位秒位比start_time小,计算分位需要向时位借位,秒位计算时需要向分位借位

hour1 = hour - 1
min1 = (stop_min + 60) - start_min
sed1 = (stop_sed + 60 ) - start_sed
min2 = min1 - 1

10.第10种情况
start_time = 2023-10-09 17:34:21
stop_time = 2023-10-10 12:19:10
此时,stop_time的日位比start_time大,时位分位秒位均比start_time小,计算时分秒位分别往前一位借位

day1 = day - 1
hour1 = (stop_hour + 24) - start_hour
hour2 = hour1 - 1
min1 = (stop_min + 60) - start_min
min2 = min1 - 1
sed1 = (stop_sed + 60) - start_sed

最后,输出差值,就能统计出两个时间的差值

测试时长:022小时30分钟34
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值