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

Java获取一周中最近的某一天的日期,java,android,Java,Android,您好首先我想指出的是,我在这里发现了几篇有相同问题的帖子,但是没有一篇适合我。我正在为android创建闹钟应用程序,我最不需要的是:获取一周中最近的某一天的日期 我在这里找到了几个算法,我也将在这里复制一个: import java.util.Calendar; public class NextWednesday { public static Calendar nextDayOfWeek(int dow) { Calendar date = Calendar.ge

您好首先我想指出的是,我在这里发现了几篇有相同问题的帖子,但是没有一篇适合我。我正在为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
        );
    }
}
import java.util.Calendar;
下星期二公开课{
公共静态日历下一个星期五(int dow){
日历日期=Calendar.getInstance();
int diff=道琼斯指数-日期.get(日历.一周中的一天);
如果(!(差异>0)){
diff+=7;
}
添加日期(日历日/月/日,差异);
返回日期;
}
公共静态void main(字符串[]args){
System.out.printf(

%ta,%%好的,算法工作正常,我犯了一个简单的错误,我给函数传递了错误的日期,我传递了当前日期,而不是用户选择的日期好的,算法工作正常,我犯了一个简单的错误,我给函数传递了错误的日期,我传递了当前日期,而不是由用户选择

,如果您希望保持简单

 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();
}
public Date getNextDate(int dayOfWeek){
Calendar c=Calendar.getInstance();
对于(int i=0;i<7;i++){
如果(c.get(日历周中的天)=周中的天){
返回c.getTime();
}否则{
c、 添加(日历日/周,1);
}
}
返回c.getTime();
}

如果您希望保持简单

 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();
}
public Date getNextDate(int dayOfWeek){
Calendar c=Calendar.getInstance();
对于(int i=0;i<7;i++){
如果(c.get(日历周中的天)=周中的天){
返回c.getTime();
}否则{
c、 添加(日历日/周,1);
}
}
返回c.getTime();
}

您的问题是什么?System.out.printf(“%ta,%I需要获取用户打开应用程序并设置每个星期三触发的闹钟的最近请求日期,例如,今天是星期二,我需要将星期三的最近日期传递给AlarmManager,此函数将返回下周最近的星期三。我需要获取此函数中的星期三如果本周的星期三已经过去了,那就从下周开始吧,但是为什么它跳过了星期三,而星期二刚刚过去,而从下一周开始的那一天对我来说效果很好呢?请打印明天的日期。仅供参考:
!(diff>0)
最好写为
diff您的问题是什么?System.out.printf是什么("%ta,%I需要获取用户打开应用程序并设置每个星期三触发的闹钟的最近请求日期,例如,今天是星期二,我需要将星期三的最近日期传递给AlarmManager,此函数将返回下周最近的星期三。我需要获取此函数中的星期三如果本周的星期三已经过去了,那就从下周开始吧,但是为什么它跳过了星期三,而星期二刚刚过去,而从下一周开始的那一天对我来说效果很好呢?请打印明天的日期。仅供参考:
!(diff>0)
最好写成
diff-FYI,像
java.util.date
java.util.Calendar
,和
java.text.simpleDataFormat
这样麻烦的旧日期时间类现在是遗留的,被这些类所取代。在项目中,许多java.time功能被移植回java 6和java 7。进一步适应于e项目中的早期Android。参见.FYI,麻烦的旧日期时间类,如
java.util.date
java.util.Calendar
,和
java.text.SimpleDateFormat
,现在是遗留的,被类所取代。项目中的许多java.time功能都被重新移植到java 6和java 7中。进一步适应earl在项目中使用Android。请参阅。