我有一个问题是要找出哪一天(在给定的清单中)是从今天起最近的一天。
例如
day_list is Mon, Tue, Fri, Sat
and today is Wed
现在如果我们在纸上计算天数,
Wed to Mon = 5 days
Wed to Tue = 6 days
Wed to Fri = 2 days
Wed to Sat = 3 days
因此答案为Fri
。
但是在代码中,我该如何实现这个逻辑呢?还是有其他方法来优化它的过程(关于if_else)?
答案 0 :(得分:2)
我的想法是在下面,但可能你应该改变一点以满足你的需要。
将您的星期数从0到6。
Sun = 0; Mon = 1; Tue = 2; etc.
如果您只有几天,请保留数字。例如,如果您只有Mon
,Tue
,Fri
和Sat
,那么请将数字与日期相对应,即1
,{{1 }},2
和5
。
现在,如果你想知道6
(有一个数字Wed
)的那些日子之间的“距离”,你可以这样做:
3
distance = (theNumberOfYourDayInList - 3) mod 7
是天数。
所以如果你想知道它们之间的距离:
7
至Wed
:Mon
即distance = (1 - 3) mod 7
。
5
至Wed
:Fri
即distance = (4 - 3) mod 7
。
1
至Wed
:Tue
即distance = (2 - 3) mod 7
。
将这些逻辑变成代码是微不足道的,我认为你不应该遇到任何问题。
答案 1 :(得分:1)
算一下吧
int Count= days(Calendar.WEDNESDAY, Calendar.TUESDAY);
private int days(int Day1, int Day2) {
int Days = 1;
while (Day1 != Day2) {
Day1 += 1;
Days += 1;
if (Day1 == Calendar.SATURDAY) Day1 = Calendar.SUNDAY;
}
return Days;
}