Текущая неделя понедельника

В моем случае неделя начинается с понедельника по воскресенье. Я хочу получить текущую неделю в понедельник. Я использовал следующий код, чтобы получить дату понедельника.

        Calendar c = Calendar.getInstance();
        c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        System.out.println("Date " + c.getTime());

Он работает нормально для всех дней, кроме воскресенья. Если текущим днем ​​является воскресенье, он будет давать следующую неделю в понедельник. Возможно ли получить текущую неделю в понедельник, используя API java.util.Date/Calendar, даже если это воскресенье.

Любая помощь приветствуется.

2 ответа

Вы можете сказать Calendar класс, какой день недели следует считать первым. Попробуйте добавить следующую строку:

c.setFirstDayOfWeek(Calendar.MONDAY);
LocalDateTime thisWeeksMonday = LocalDateTime.now().with(DayOfWeek.MONDAY);

на всякий случай, что Java 8 является вариантом.

Как указано в " Получить дату первого дня недели на основе LocalDate.now() в Java 8", ваше использование может отличаться.

Что касается Java <8, вам нужно установить setFirstDayOfWeek как упоминал Джек. Просто убедитесь, что вы установили его до изменения дня недели, например:

Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println("Date " + c.getTime());
Другие вопросы по тегам