我正在Android中开发一款应用程序,该服务必须在每周四和周日的22:00执行。
我需要的是将日历设置为当天和时间。但是,我不知道该怎么做。
Calendar calendar = Calendar.getInstance();
这是一个包含当前日期和时间的日历。
我知道我可以添加天,分钟,小时等。但是,有没有办法直接setNext("thursday")
?
我不想在那里做很多数学。我的意思是我正在寻找一个答案,不需要计算下一个星期四剩下多少分钟/小时/天。
谢谢!
答案 0 :(得分: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());
答案 1 :(得分:0)
试试这个?
c.add(c.DAY_OF_YEAR, -7);
或
c.add(c.DAY_OF_YEAR, +7);
答案 2 :(得分:0)
没有多少数学,解决了这个问题,所以很干净:
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
我只是改编并解释了代码。
答案 3 :(得分:0)
calendar.set(Calendar.DAY_OF_WEEK,Calendar.THURSDAY);