时间格式为 年月日 时分秒,例如:
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
最后,输出差值,就能统计出两个时间的差值
测试时长:0天22小时30分钟34秒