算法
如果是早上打开,分钟不是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