Как рассчитать «Пятница до» в Java или Groovy? - PullRequest
3 голосов
/ 16 февраля 2011

Мне нужно иметь возможность рассчитать «пятницу до» сегодня на Java или Groovy.

Например, если сегодня понедельник, 21 февраля, «пятница до» будет пятница, 18 февраля.

А если сегодня будет вторник, 1 февраля, «пятница до»быть пятницей, 28 января.

Каков наилучший способ сделать это?Какие существующие классы я могу наиболее эффективно использовать?

Ответы [ 2 ]

3 голосов
/ 16 февраля 2011

Вы можете использовать цикл:

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 голос
/ 16 февраля 2011

Я бы сделал метод, который дал бы мне количество дней, прошедших с данного дня.

// 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...