Как получить даты недели (я знаю номер недели)? Я знаю номер недели в году, неделя начинается с воскресенья, потом понедельник, вторник..., суббота. Так как я знаю номер недели, какой эффективный способ получить даты определенной недели с помощью Java-кода? Ответ 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()));
Ответ 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()));