首页 > 解决方案 > 如何找到两次之间的差异

问题描述

我试图找出一种方法,从同一天取两次并找出它们之间的区别。到目前为止,在下面的代码中显示,我已将两个给定时间转换为 Int Vars 并拆分字符串以检索信息。这很好用,但是当时钟输入值分钟高于时钟输出值时,它会继续在输出的分钟槽中给出负值。

我目前的代码是:

from datetime import datetime

now = datetime.now()
clocked_in = now.strftime("%H:%M")
clocked_out = '18:10'

def calc_total_hours(clockedin, clockedout):
    
    in_hh, in_mm = map(int, clockedin.split(':'))
    out_hh, out_mm = map(int, clockedout.split(':'))
    hours = out_hh - in_hh
    mins = out_mm - in_mm
    return f"{hours}:{mins}"



print(calc_total_hours(clocked_in, clocked_out))

如果打卡的值是12:30并且打卡的值是18:10

输出是:

6:-20

完成所有操作后,需要将输出转换回待机格式H:M:S

感谢您的帮助,并为缺乏高质量的代码感到抱歉。我还在学习!:D

标签: pythondatetime

解决方案


首先,为了修复您的代码,您需要将时间转换为分钟,计算差异,然后将其转换回小时和分钟:

clocked_in = '12:30'
clocked_out = '18:10'

def calc_total_hours(clockedin, clockedout):
    in_hh, in_mm = map(int, clockedin.split(':'))
    out_hh, out_mm = map(int, clockedout.split(':'))
    diff = (in_hh * 60 + in_mm) - (out_hh * 60 + out_mm)
    hours, mins = divmod(abs(diff) ,60)
    return f"{hours}:{mins}"

print(calc_total_hours(clocked_in, clocked_out))
# 5: 40

实现时差的更好方法:

import time
import datetime

t1 = datetime.datetime.now()
time.sleep(5)
t2 = datetime.datetime.now()

diff = t2 - t1
print(str(diff))

输出:

#h:mm:ss
 0:00:05.013823

推荐阅读