规则:
每季度的第二天,员工累积8小时带薪休假。季度,特别是:
问题
使用python,我需要定义以下函数的核心:
def acrued_hours_between(start_date, end_date):
# stuff
return integer
我目前正在使用Python,我想知道正确的方法是什么。
我假设使用DateTime对象,可能还有dateutil模块会有所帮助,但是我的大脑由于某种原因没有解决这个问题。在
更新
我认为计算有点简单,因为问题是:
"How many hours of Paid Time Off are accrued from start_date to end_date?" given the above "rules".
这可以通过简单的旧整数数学实现:
我会按时间顺序对某个特定员工的所有事件进行排序,并按照该顺序模拟事件,以检查可用的带薪休假天数不会低于零。带薪休假请求是一个值为-(小时数)的事件。1月1日有一个价值+8小时的活动。在
每次修改数据时,从一开始就再次运行模拟。在
这种方法的优点是,它将检测到这样的情况:一个新的事件在当时是有效的,但会导致空闲天数减少,从而使以前有效的后来的事件现在变得无效。在
这可以通过将中间结果存储在缓存中进行优化,但由于每个员工可能只有几百个事件,所以不需要进行此优化。在
OP的编辑提到了真正的根本问题是:
我同意,我会用最直接和直接的方式来计算,例如:
一个直接的公式当然会更快,但是如果没有错误的话,这个“通过检查纠正”的例子可以自动校准更快的公式,通过检查他们是否同意一个大样本的日期对(一定要包括在后面所有角落的情况,如第一天和最后一个季度)。在
相关问题 更多 >
编程相关推荐