Каков наилучший способ получить даты для последнего понедельника и пятницы

Мне нужно узнать даты на понедельник и пятницу на прошлой неделе. Для этого я получаю дату понедельника на этой неделе и вычитаю 7 дней. Это дает мне дату понедельника на прошлой неделе.

Чтобы получить дату пятницы, я должен добавить 4. Это немного смутило меня, потому что по какой-то причине первый день недели - воскресенье, а не понедельник здесь, в Великобритании.

Во всяком случае, вот как я получаю даты.

            // Get the dates for last MON & FRI
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        cal.add(Calendar.DAY_OF_WEEK, -7);

        cal.set(Calendar.HOUR_OF_DAY,0);
        cal.set(Calendar.MINUTE,0);
        cal.set(Calendar.SECOND,0);
        cal.set(Calendar.MILLISECOND,0);

        // Get the date on Friday
        cal.add(Calendar.DAY_OF_WEEK, 4);

        cal.set(Calendar.HOUR_OF_DAY,23);
        cal.set(Calendar.MINUTE,59);
        cal.set(Calendar.SECOND,59);
        cal.set(Calendar.MILLISECOND,0);

Выше работает, но мне интересно, если что-то не так с логикой. То есть будет ли это работать в феврале, високосные годы и т. д.

Не стесняйтесь предлагать лучшее решение / подход.

Спасибо

8
задан ziggy 30 September 2012 в 12:19
поделиться