[英]Java — convert from number of weekdays to number of days
This is similar to Calculating dates given two dates excluding weekend but a different problem. 这类似于计算两个日期的日期,不包括周末但是有不同的问题。
The question is "I was given a task N weekdays ago. How many days ago was this?" 问题是“我在工作日前有一个任务。这是多少天前的事了?”
On a Friday, 3 weekdays ago is 3 days ago. 星期五,3个工作日前是3天前。 On a Monday, 3 weekdays ago is 5 days ago. 星期一,3个工作日前是5天前。
I can write a very simple solution by iterating. 我可以通过迭代编写一个非常简单的解决方案。 However, it strikes me that it should be possible to do this as an O(1) operation. 但是,我觉得应该可以将其作为O(1)操作。 A close but wrong answer is N + (7/5)N. 一个接近但错误的答案是N +(7/5)N。 Any tips? 有小费吗?
This should work 这应该工作
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];
}
(I didn't include the daysPerWeekday because it seemed like you had it ("On a Friday, 3 weekdays ago is 3 days ago. On a Monday, 3 weekdays ago is 5 days ago.")... (我没有包括daysPerWeekday,因为它好像你有它(“在星期五,3个工作日前是3天前。在星期一,3个工作日前是5天前。”)...
First convert even numbers of 5 days into 7 day weeks, then handle the remainder by adding two days if it will go over a weekend. 首先将偶数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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.