2

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

我所需要的是将日历设置为该日期和时间。但是,我不确定该怎么做。

Calendar calendar = Calendar.getInstance();

这给了我一个带有当前日期和时间的日历。

我知道我可以添加天数、分钟数、小时数等。但是,有什么方法可以直接添加setNext("thursday")吗?

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

谢谢!!

4

4 回答 4

3

我发现下面的解决方案更简单,更便携,因为它不涉及太多数学。一旦将其设置为星期四,我相信您可以使用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());
于 2013-09-27T14:12:45.777 回答
1

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

    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.

归功于: http: //www.coderanch.com/t/385117/java/java/date-Monday

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

于 2013-09-27T13:51:28.173 回答
0

尝试这个?

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

或者

c.add(c.DAY_OF_YEAR, +7);
于 2013-09-27T13:33:36.853 回答
0

calendar.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);

于 2019-04-24T05:34:06.197 回答