假程序员,算了一下每天平均在办公室时间超过11个小时 ……

本文介绍了一种用于调整员工打卡时间的算法,该算法能够自动将早上的打卡时间调整到最近的10分钟倍数,而下班打卡时间则调整到30分钟标记,确保了时间记录的一致性和规范性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法
如果是早上打开,分钟不是10 的倍数往后推到10倍数。
下班前打开,分钟不是30的倍数往前推到30的倍数。
代码

def defer(hourMin):
    '''
    早上的时候后推,08:35打卡算 08:40,08:39打卡算08:40
    晚上下班的时候向早推送,18:20 打卡算 18:00下班,18:30打卡算18:30下班
    :param hourMin:
    :param ahead:
    :return:
    '''
    hour, min = [int(x) for x in hourMin.split(":", 1)]
    if hour < 12:  # 说明是早上
        if min % 10 > 0:
            min = min + 10 - min % 10
            if min == 0 or min == 60:
                min = 0
                hour = hour + 1
    else:  # 其他说明是下班打卡
        if min != 30:
            min = 30 if min > 30 else 0
    return "%02d:%02d" % (hour, min)

测试

def test_defer():
    test = {
        "08:01": "08:10",
        "08:30": "08:30",
        "08:59": "09:00",
        "08:40": "08:40",
        "18:01": "18:00",
        "18:30": "18:30",
        "18:50": "18:30"
    }
    for x, y in test.items():
        r = defer(x)
        print("input=", x, y, "result=", r, "pass=", "Y" if r == y else "NO.")

6月份

Support List: ['201906', '201907']
('6.3', '08:30', '19:30') 1 当日=11.00h 总计=11.00h
('6.4', '08:24', '19:09') 2 当日=10.50h 总计=21.50h
('6.5', '08:31', '18:49') 3 当日=9.50h 总计=31.00h
('6.6', '08:30', '19:11') 4 当日=10.50h 总计=41.50h
('6.11', '08:32', '19:04') 5 当日=10.00h 总计=51.50h
('6.12', '08:31', '19:01') 6 当日=10.00h 总计=61.50h
('6.13', '08:29', '20:29') 7 当日=11.50h 总计=73.00h
('6.14', '08:28', '19:32') 8 当日=11.00h 总计=84.00h
('6.15', '13:29', '18:47') 9 当日=5.50h 总计=89.50h
('6.17', '08:34', '19:05') 10 当日=10.00h 总计=99.50h
('6.18', '08:27', '20:48') 11 当日=12.00h 总计=111.50h
('6.19', '08:31', '19:29') 12 当日=10.00h 总计=121.50h
('6.21', '08:27', '19:40') 13 当日=11.00h 总计=132.50h
('6.22', '08:32', '18:55') 14 当日=9.50h 总计=142.00h
('6.24', '08:21', '18:27') 15 当日=9.50h 总计=151.50h
('6.25', '08:27', '18:38') 16 当日=10.00h 总计=161.50h
('6.26', '08:37', '18:57') 17 当日=9.50h 总计=171.00h
('6.27', '13:27', '20:03') 18 当日=7.00h 总计=178.00h
('6.28', '08:24', '19:05') 19 当日=10.50h 总计=188.50h
------------------------------------------------------------
201906: Work=19Day 188.50h Avg=9.92hour/day

6月份请了病假,上班19天,每天最少9.92小时在办公室,总计188.5工时。

7月份

Support List: ['201906', '201907']
('7.1', '08:30', '18:43') 1 当日=10.00h 总计=10.00h
('7.2', '08:23', '19:44') 2 当日=11.00h 总计=21.00h
('7.3', '08:30', '19:47') 3 当日=11.00h 总计=32.00h
('7.4', '08:28', '19:11') 4 当日=10.50h 总计=42.50h
('7.5', '08:41', '18:59') 5 当日=9.50h 总计=52.00h
('7.6', '08:37', '18:55') 6 当日=9.50h 总计=61.50h
('7.8', '08:30', '21:31') 7 当日=13.00h 总计=74.50h
('7.9', '08:40', '20:07') 8 当日=11.00h 总计=85.50h
('7.10', '08:29', '19:50') 9 当日=11.00h 总计=96.50h
('7.11', '08:37', '19:06') 10 当日=10.00h 总计=106.50h
('7.12', '08:36', '19:26') 11 当日=10.00h 总计=116.50h
('7.15', '08:37', '20:24') 12 当日=11.00h 总计=127.50h
('7.16', '08:34', '20:28') 13 当日=11.00h 总计=138.50h
('7.17', '08:35', '21:09') 14 当日=12.00h 总计=150.50h
('7.18', '08:31', '20:38') 15 当日=11.50h 总计=162.00h
('7.19', '08:30', '19:59') 16 当日=11.00h 总计=173.00h
('7.20', '08:32', '18:58') 17 当日=9.50h 总计=182.50h
('7.22', '08:38', '21:10') 18 当日=12.00h 总计=194.50h
('7.23', '08:32', '19:18') 19 当日=10.00h 总计=204.50h
('7.24', '08:38', '20:01') 20 当日=11.00h 总计=215.50h
('7.25', '08:40', '20:52') 21 当日=11.50h 总计=227.00h
('7.26', '08:30', '18:37') 22 当日=10.00h 总计=237.00h
('7.29', '08:37', '19:12') 23 当日=10.00h 总计=247.00h
('7.30', '08:23', '20:27') 24 当日=11.50h 总计=258.50h
('7.31', '08:39', '12:29') 25 当日=3.00h 总计=261.50h
------------------------------------------------------------
201907: Work=25Day 261.50h Avg=10.46hour/day

7月份更离谱,上班25个工作日,平均每天11个小时在办公室,总计261.5工时。
程序员工资真的高???coconets@163.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值