python - 如何找到两次之间的差异
问题描述
我试图找出一种方法,从同一天取两次并找出它们之间的区别。到目前为止,在下面的代码中显示,我已将两个给定时间转换为 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
解决方案
首先,为了修复您的代码,您需要将时间转换为分钟,计算差异,然后将其转换回小时和分钟:
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
推荐阅读
- java - Thymeleaf 不适用于驼峰类字段
- r - 两组观察值之间的成对差异
- javascript - CSV-Parser 似乎无法正确解析换行数据
- python - Keras 的回归 MSE 较低,但结果相差甚远
- azure - 使用 Azure 存储 REST API 版本 >= 2019-02-02 指定文件系统属性
- python - 在 keras 中实现对 model.predict 的回调
- python - Python 模拟
- html - Ionic 5 Angular:离子滑动水平滑动在设备上不起作用
- c++ - 最终项目介绍 C++ 编程课程
- mysql - MYSQL 中的 AES_ENCRYPT 和 AES_DECRYPT 函数