Подтвердить что ты не робот

Как получить даты недели (я знаю номер недели)?

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

Так как я знаю номер недели, какой эффективный способ получить даты определенной недели с помощью Java-кода?

4b9b3361

Ответ 1

Если вы не хотите использовать внешнюю библиотеку, просто используйте календарь.

SimpleDateFormat sdf = new SimpleDateFormat("MM dd yyyy");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.WEEK_OF_YEAR, 23);        
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(sdf.format(cal.getTime()));    

Ответ 2

Вы можете использовать библиотеку joda time

int weekNumber = 10;
DateTime weekStartDate = new DateTime().withWeekOfWeekyear(weekNumber);
DateTime weekEndDate = new DateTime().withWeekOfWeekyear(weekNumber + 1);

Ответ 3

Чистое решение Java 8/java.time

Основываясь на этом:

final long calendarWeek = 34;
LocalDate desiredDate = LocalDate.now()
            .with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, calendarWeek)
            .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));

Ответ 4

Вы не указали, какой тип возврата вам нужен, но этот код вам будет полезен. sysouts и formatter - это просто показать результат.

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.set(Calendar.WEEK_OF_YEAR, 30);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
System.out.println(formatter.format(cal.getTime()));
cal.add(Calendar.DAY_OF_WEEK, 6);
System.out.println(formatter.format(cal.getTime()));