2011-02-16 1 views
3

Je dois être en mesure de calculer le "vendredi avant" aujourd'hui en Java ou Groovy.Comment calculer "vendredi avant" en Java ou Groovy?

Par exemple, si aujourd'hui est le lundi 21 Février le « vendredi avant » serait le vendredi 18 Février

Et si était ce mardi, Février 1, le « vendredi avant » serait vendredi, Janvier 28.

Quelle serait la meilleure façon de procéder? Quelles classes existantes puis-je exploiter le plus efficacement?

Répondre

3

Vous pouvez utiliser une boucle:

Calendar c = Calendar.getInstance(); 
while(c.get(Calendar.DAY_OF_WEEK) != Calendar.FRIDAY) 
{ 
    c.add(Calendar.DAY_OF_WEEK, -1) 
} 

Ou

Calendar c = Calendar.getInstance(); 
c.add(Calendar.DAY_OF_WEEK, -((c.get(Calendar.DAY_OF_WEEK) + 1) % 7)); 
+0

Merci! Une approche parfaite pour ce que j'essaye de faire! –

1

je ferais une méthode qui m'a donné le nombre de jours qui se sont écoulés depuis le jour donné.

// 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); 
} 
Questions connexes