如何在Java或Groovy中计算“Friday before”?

时间:2011-02-16 04:15:54

标签: java groovy calendar

我需要能够在Java或Groovy中计算今天的“星期五之前”。

例如,如果今天是2月21日星期一,那么“星期五之前”将是2月18日星期五。

如果今天是2月1日星期二,那么“星期五之前”将是1月28日星期五。

最好的方法是什么?我可以最有效地利用哪些现有课程?

2 个答案:

答案 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);
}