Java - 从工作日的数量转换为天数

时间:2014-04-01 23:27:54

标签: java date-arithmetic

这与Calculating dates given two dates excluding weekend类似,但问题不同。

问题是"我在工作日N给了我一个任务。这是多少天前的?"

星期五,3个工作日前是3天前。星期一,3个工作日前是5天前。

我可以通过迭代编写一个非常简单的解决方案。但是,我觉得应该可以将其作为O(1)操作。一个接近但错误的答案是N +(7/5)N。有什么提示吗?

2 个答案:

答案 0 :(得分:1)

这应该有效

 static int days(int weekdays){
      int nweeks = weekdays/5;
      int extra = weekdays%5;
      int[] daysPerWeekday = new int[]{<Something based on which day it is>};
      return nweeks*7 + daysPerWeekday[extra];
 }

(我没有包括daysPerWeekday,因为它好像你有它(&#34;在星期五,3个工作日前是3天前。在星期一,3个工作日前是5天前。& #34)...

答案 1 :(得分:1)

首先将偶数5天转换为7天工作周,然后在剩余时间内处理剩余数据,如果它将持续一个周末。

int MONDAY = 1, TUESDAY = 2, WEDNESDAY = 3, THURSDAY = 4, FRIDAY = 5;
int today = getToday();
int weeks = weekdays / 5;
int extraDays = weekdays % 5;
int days = weeks * 7;
if (today <= extraDays) {
    days += 2;
}
days += extraDays;