您好,首先我想说明我在这里找到了几个同样问题的帖子,但 NONE 对我有用。我正在为Android创建闹钟应用程序,我需要的最后一件事是:获取一周中最近某一天的日期。
我在这里找到了几种算法,我也会在这里复制一个:
import java.util.Calendar;
public class NextWednesday {
public static Calendar nextDayOfWeek(int dow) {
Calendar date = Calendar.getInstance();
int diff = dow - date.get(Calendar.DAY_OF_WEEK);
if (!(diff > 0)) {
diff += 7;
}
date.add(Calendar.DAY_OF_MONTH, diff);
return date;
}
public static void main(String[] args) {
System.out.printf(
"%ta, %<tb %<te, %<tY",
nextDayOfWeek(Calendar.WEDNESDAY) // this can contain any of the 7 days in week
);
}
}
今天是星期二在我的国家
如果我把星期三放在函数中,那么它将在下周返回给我,但这不正确。
这个算法会自动查看下一周,无论是星期一和整周都在你之前,它会跳到下一周并完成它的工作但是这不正确,我需要实现相同的行为但是它必须从今天开始。
我希望它足够清楚。
答案 0 :(得分:0)
好的,算法工作正常,我犯了一个简单的错误,我错误的一天到了函数,我过了当天,而不是用户选择的那个
答案 1 :(得分:0)
如果你想保持简单。
public Date getNextDate(int dayOfWeek) {
Calendar c = Calendar.getInstance();
for ( int i = 0; i < 7; i++ ) {
if ( c.get(Calendar.DAY_OF_WEEK) == dayOfWeek ) {
return c.getTime();
} else {
c.add(Calendar.DAY_OF_WEEK, 1);
}
}
return c.getTime();
}