Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将日历设置为下周四_Java_Android_Calendar - Fatal编程技术网

Java 将日历设置为下周四

Java 将日历设置为下周四,java,android,calendar,Java,Android,Calendar,我正在用Android开发一个应用程序,它有一个必须在每周四和周日22:00执行的服务 我真正需要的,是为那天和时间设置一个日历。然而,我不知道该怎么做 Calendar calendar = Calendar.getInstance(); 这是给我一个带有当前日期和时间的日历 我知道我可以添加天、分钟、小时等。但是,有没有办法直接设置下一个(“星期四”) 我不想在那里做很多数学题。我的意思是我在寻找一个答案,这个答案不需要计算到下周四还有多少分钟/小时/天 谢谢 试试这个 c.add(c.D

我正在用Android开发一个应用程序,它有一个必须在每周四和周日22:00执行的服务

我真正需要的,是为那天和时间设置一个日历。然而,我不知道该怎么做

Calendar calendar = Calendar.getInstance();
这是给我一个带有当前日期和时间的日历

我知道我可以添加天、分钟、小时等。但是,有没有办法直接设置下一个(“星期四”)

我不想在那里做很多数学题。我的意思是我在寻找一个答案,这个答案不需要计算到下周四还有多少分钟/小时/天

谢谢

试试这个

c.add(c.DAY_OF_YEAR, -7);


数学不多,解决了这个问题,很干净:

    int weekday = calendar.get(Calendar.DAY_OF_WEEK);  
    if (weekday!=Calendar.THURSDAY){//if we're not in thursday
        //we calculate how many days till thursday
        //days = The limit of the week (its saturday) minus the actual day of the week, plus how many days till desired day (5: sunday, mon, tue, wed, thur). Modulus of it.
        int days = (Calendar.SATURDAY - weekday + 5) % 7; 
        calendar.add(Calendar.DAY_OF_YEAR, days);
    }
    //now we just set hour to 22.00 and done.
归功于:


我刚刚修改并解释了代码。

我发现下面的解决方案更简单,更便于移植,因为它不需要太多的数学运算。一旦您将其设置为星期四,我相信您可以使用calendar对象上的
setTime()
方法将其设置为22:00

//dayOfWeekToSet is a constant from the Calendar class
//c is the calendar instance
public static void SetToNextDayOfWeek(int dayOfWeekToSet, Calendar c){
    int currentDayOfWeek = c.get(Calendar.DAY_OF_WEEK);
            //add 1 day to the current day until we get to the day we want
    while(currentDayOfWeek != dayOfWeekToSet){
        c.add(Calendar.DAY_OF_WEEK, 1);
        currentDayOfWeek = c.get(Calendar.DAY_OF_WEEK);
    }
}

  //usage:
  Calendar c = Calendar.getInstance();
  System.out.println(c.getTime());
  SetToNextDayOfWeek(Calendar.THURSDAY,c);
    System.out.println(c.getTime());

calendar.set(calendar.DAY\u OF u WEEK,calendar.周四)

日历api对于做你想做的事情来说是可怕的。“太可怕了。你会怎么做呢,@Zavior?带着很多痛苦和时间。”。“当然不是没有大量的数学知识。”扎维奥我找到了答案。数学不多,时间也不多:)这比实际的一天多了7天。这不是我想要的,就像我在一天中运行这个一样,它将在下周一再次执行。我得到了几乎相同的结果,尽管使用Calendars set方法的解决方案比较混乱。你的解决方案更清晰:PWow。完全正确,很容易理解,数学也很简单。
//dayOfWeekToSet is a constant from the Calendar class
//c is the calendar instance
public static void SetToNextDayOfWeek(int dayOfWeekToSet, Calendar c){
    int currentDayOfWeek = c.get(Calendar.DAY_OF_WEEK);
            //add 1 day to the current day until we get to the day we want
    while(currentDayOfWeek != dayOfWeekToSet){
        c.add(Calendar.DAY_OF_WEEK, 1);
        currentDayOfWeek = c.get(Calendar.DAY_OF_WEEK);
    }
}

  //usage:
  Calendar c = Calendar.getInstance();
  System.out.println(c.getTime());
  SetToNextDayOfWeek(Calendar.THURSDAY,c);
    System.out.println(c.getTime());