2011-02-16 51 views
3

我需要能夠在Java或Groovy中計算今天的「星期五之前」。如何計算Java或Groovy中的「星期五之前」?

例如,如果今天是週一,2月21日是週五,2月18日

與「星期五之前」如果今天是星期二,2月1日「週五之前」將是週五,一月28.

什麼是最好的方法來做到這一點?我可以最有效地利用哪些現有類?

回答

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)); 
+0

Thanks!一個完美的方法,我正在嘗試做! – 2011-02-16 06:07:58

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); 
} 
相關問題