Java - Как вычислить первый и последний день каждой недели

Я пытаюсь создать недельный календарь, который похож на это: http://dhtmlx.com/docs/products/dhtmlxScheduler/sample_basic.html

Как я могу вычислять каждую неделю дату? Например, эта неделя:

В понедельник - в воскресенье
7 июня, 8 июня, 9 июня, 10 июня, 11 июня, 12 июня, 13 июня

16
задан MPelletier 29 April 2012 в 16:23
поделиться

7 ответов

Думаю, это делает то, что вы хотите:

// Get calendar set to current date and time
Calendar c = Calendar.getInstance();

// Set the calendar to monday of the current week
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

// Print dates of the current week starting on Monday
DateFormat df = new SimpleDateFormat("EEE dd/MM/yyyy");
for (int i = 0; i < 7; i++) {
    System.out.println(df.format(c.getTime()));
    c.add(Calendar.DATE, 1);
}
41
ответ дан 30 November 2019 в 15:08
поделиться

Первый день этой недели.

    Calendar c = Calendar.getInstance();
    while (c.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
        c.add(Calendar.DATE, -1);
    }
8
ответ дан 30 November 2019 в 15:08
поделиться

Вы можете развить это: следующий код печатает первую и последнюю даты каждой недели в течение 15 недель с этого момента.

Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
for(int i=0; i<15; i++)
{
    System.out.print("Start Date : " + c.getTime() + ", ");
    c.add(Calendar.DAY_OF_WEEK, 6);
    System.out.println("End Date : " + c.getTime());
    c.add(Calendar.DAY_OF_WEEK, 1);
}
2
ответ дан 30 November 2019 в 15:08
поделиться

Если вы знаете, какой сейчас день (пятница) и текущую дату (11 июня), вы можете рассчитать другие дни на этой неделе.

1
ответ дан 30 November 2019 в 15:08
поделиться

Я рекомендую вам использовать Joda Библиотеку времени. Класс григорианского календаря имеет методы weekOfWeekyear и dayOfWeek.

1
ответ дан 30 November 2019 в 15:08
поделиться

Да. Используйте Joda Time

http://joda-time.sourceforge.net/

0
ответ дан 30 November 2019 в 15:08
поделиться

Алгоритм, который вы ищете (вычисление дня недели для любой заданной даты) - это "конгруэнтность Зеллера". Вот реализация на Java:

http://technojeeves.com/joomla/index.php/free/57-zellers-congruence

0
ответ дан 30 November 2019 в 15:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: