Java获取最近一周的某一天的日期

时间:2016-10-11 18:18:06

标签: java android

您好,首先我想说明我在这里找到了几个同样问题的帖子,但 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
        );
    }
}
  • 今天是星期二在我的国家

  • 如果我把星期三放在函数中,那么它将在下周返回给我,但这不正确。

  • 这个算法会自动查看下一周,无论是星期一和整周都在你之前,它会跳到下一周并完成它的工作但是这不正确,我需要实现相同的行为但是它必须从今天开始。

示例:今天是星期一,我正在寻找周三

  • 正确输出:本周三的星期三。
  • 不正确的输出:下周的星期三日期。

我希望它足够清楚。

2 个答案:

答案 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();
}