我有数学问题...(目前我使用手动迭代解决了它,这非常慢)...
例如,如果员工在特定日期每周(可以是每两周/每 2 周和每月)领取工资(我们称员工每周二领取工资,每月称员工在特定日期领取工资)。
我的日期范围在2009年8月10日至2009年12月31日之间,现在如何获取员工领取工资的频率?
可以使用 jodatime 来计算吗?
澄清这个问题的示例:
I have date range between Friday 14 August - Monday 14 Sept 2009 (31 days) the employee got paid on every Tuesday so he got paid on 18 & 25 August, 1 & 8 August we got 4 times payment (frequency)
另一个例子:
with the same date range Friday 14 August - Monday 14 Sept 2009 (31 days) but different pay date .. for example on Sunday
so he got paid on : 15, 22 & 29 August , 5 & 12 September ... we got 5 times payment.
相同的日期范围但不同的发薪日..结果会不同。
所以我的问题是,有没有任何公式可以解决这个问题? 目前我使用手动迭代器进行计算..这非常慢(因为范围可能是几年或几个月)
谢谢
ps:我正在使用 groovy ..欢迎任何使用 java 或 groovy 或仅算法的解决方案:)
最佳答案
付款期通常是在每月 15 日和月底,因此在这种情况下,您需要计算月份数并乘以 2,检查结束条件(如果开始时间在 15 日之前,则减去一个付款期;如果结束时间晚于月底,则减去一个支付周期)。
可以获取天、周和月的计数,但您必须添加逻辑来处理不可靠的结束条件。正如我所描述的案例所示,这可能不是一个简单的公式。
关于java - 计算一定范围内的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1253953/