生活随笔
收集整理的这篇文章主要介绍了
测试工程师之【python】按工龄开始日期和司龄开始日期计算当年法定年假
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1.脚本需求:
公司内部休假系统,计算规则比较复杂比较恶心,前期准备工作看看文档什么的,想着自己写一个一摸一样类似的规则方便到时候给出工龄和司龄日期自动计算结果,省的到时候用计算器手工算了,另一方面是熟悉业务方便后期功能测试写用例场景能想的全覆盖的多一点
2.代码实现及思路
对年假计算规则百度查的再加上需求文档上有一部分示例场景了解的,概括来说就是未满10年-已满10年-满10年未满20年获得对应的年假天数,在根据司龄什么时候入职的是否当年1月1之前还是之后再去找对应的计算规则,猜测应该有bug,因为判断条10年20年跨档写死了,
import datetime
def legal_annual_leave(working_years_Starttime
,Secretary_Ling_Starttime
):Small_10
,Small_20
= 0,0working_years_Starttime
= datetime
.date
(int(working_years_Starttime
.split
('-')[0]),int(working_years_Starttime
.split
('-')[1]),int(working_years_Starttime
.split
('-')[2]))Secretary_Ling_Starttime
= datetime
.date
(int(Secretary_Ling_Starttime
.split
('-')[0]),int(Secretary_Ling_Starttime
.split
('-')[1]),int(Secretary_Ling_Starttime
.split
('-')[2]))if datetime
.date
(datetime
.date
.today
().year
,1,1).__sub__
(Secretary_Ling_Starttime
).days
> 0:That_year_1month1
= datetime
.date
(datetime
.date
.today
().year
,1,1)differ_day
= That_year_1month1
.__sub__
(working_years_Starttime
).days
while 1:if str(That_year_1month1
) == str(That_year_1month1
.year
) + '-12-31':breakThat_year_1month1
+= datetime
.timedelta
(days
=1)differ_day
+= 1if differ_day
== 3650:Small_10
= That_year_1month1
elif differ_day
== 7300:Small_20
= That_year_1month1
if Small_10
:return ((Small_10
.__sub__
(datetime
.date
(datetime
.date
.today
().year
,1,1)).days
/ 365) * 5) + ((datetime
.date
(datetime
.date
.today
().year
+ 1,1,1).__sub__
(Small_10
).days
/ 365) * 10)elif Small_20
:return ((Small_20
.__sub__
(datetime
.date
(datetime
.date
.today
().year
,1,1)).days
/ 365) * 10) + ((datetime
.date
(datetime
.date
.today
().year
+ 1,1,1).__sub__
(Small_20
).days
/ 365) * 15)elif differ_day
< 3650:return ((datetime
.date
(datetime
.date
.today
().year
+ 1,1,1).__sub__
(datetime
.date
(datetime
.date
.today
().year
,1,1)).days
/ 365) * 5)elif 3650 < differ_day
< 7300:return ((datetime
.date
(datetime
.date
.today
().year
+ 1,1,1).__sub__
(datetime
.date
(datetime
.date
.today
().year
,1,1)).days
/ 365) * 10)else:Secretary_Ling_Starttime_1
= Secretary_Ling_Starttimediffer_day
= Secretary_Ling_Starttime
.__sub__
(working_years_Starttime
).days
+ 1while 1:if str(Secretary_Ling_Starttime
) == str(Secretary_Ling_Starttime
.year
) + '-12-31':breakSecretary_Ling_Starttime
+= datetime
.timedelta
(days
=1)differ_day
+= 1if differ_day
== 3650:Small_10
= Secretary_Ling_Starttime
elif differ_day
== 7300:Small_20
= Secretary_Ling_Starttime
if Small_10
:return ((Small_10
.__sub__
(Secretary_Ling_Starttime_1
).days
/ 365) * 5) + ((datetime
.date
(datetime
.date
.today
().year
+ 1,1,1).__sub__
(Small_10
).days
/ 365) * 10)elif Small_20
:return ((Small_20
.__sub__
(Secretary_Ling_Starttime_1
).days
/ 365) * 10) + ((datetime
.date
(datetime
.date
.today
().year
+ 1,1,1).__sub__
(Small_20
).days
/ 365) * 15)elif differ_day
< 3650:return ((datetime
.date
(datetime
.date
.today
().year
+ 1,1,1).__sub__
(Secretary_Ling_Starttime_1
).days
/ 365) * 5)elif 3650 < differ_day
< 7300:return ((datetime
.date
(datetime
.date
.today
().year
+ 1,1,1).__sub__
(Secretary_Ling_Starttime_1
).days
/ 365) * 10)if __name__
== "__main__":print(legal_annual_leave
('2011-01-01','2020-1-5'))
总结
以上是生活随笔为你收集整理的测试工程师之【python】按工龄开始日期和司龄开始日期计算当年法定年假的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。