我需要能够在Java或Groovy中计算今天的“星期五之前”。
例如,如果今天是2月21日星期一,那么“星期五之前”将是2月18日星期五。
如果今天是2月1日星期二,那么“星期五之前”将是1月28日星期五。
最好的方法是什么?我可以最有效地利用哪些现有课程?
答案 0 :(得分:3)
您可以使用循环:
Calendar c = Calendar.getInstance();
while(c.get(Calendar.DAY_OF_WEEK) != Calendar.FRIDAY)
{
c.add(Calendar.DAY_OF_WEEK, -1)
}
或者
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_WEEK, -((c.get(Calendar.DAY_OF_WEEK) + 1) % 7));
答案 1 :(得分:1)
我会制作一个方法,告诉我自给定日期以来已过去的天数。
// Uses now by default
public static int daysSince(int day) {
return daysSince(day, Calendar.getInstance());
}
// Gives you the number of days since the given day of the week from the given day.
public static int daysSince(int day, Calendar now) {
int today = now.get(Calendar.DAY_OF_WEEK);
int difference = today - day;
if(difference <= 0) difference += 7;
return difference;
}
// Simple use example
public static void callingMethod() {
int daysPassed = daysSince(Calendar.FRIDAY);
Calendar lastFriday = Calendar.getInstance().add(Calendar.DAY_OF_WEEK, -daysPassed);
}