如何使用 Java 8 确定给定周和年的天数

How to Determine Days Given Week and Year Using Java 8

我需要一个正在处理的项目来查询给定日期范围内的 API - 在本例中为一周,例如:

周日 (2019-06-02T00:00:00Z) - 周六 (2019-06-08T23:59:59Z)

因此,通过用户输入我得到的是一周和一年,例如:

周 - 23

年份 - 2019

有没有什么好办法用Java8来判断对应的天数?

编辑:我环顾四周,但没有找到解决此问题的最新方法,我看到的最接近的方法是使用 JodaTime。我想知道是否有 better/more 现代方法来解决这个问题?

因为您知道一周有 7 天,所以您知道一年中的第几天是 week * 7,在本例中是 23 * 7。

您可以使用LocalDate.ofYear(year, dayOfYear)方法得到开始日期,然后加上6天得到一周的结束日期。

LocalDate startDate = LocalDate.ofYearDay(2019, 23 * 7);
LocalDate endDate = startDate.plusDays(6);

LocalDateTime startDateTime = LocalDateTime.of(startDate, LocalTime.of(0, 0, 0));
LocalDateTime endDateTime = startDateTime.plusDays(7).minusSeconds(1);

System.out.println(startDate.getDayOfWeek() + "(" + startDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'hh:mm:ss'Z'")) + ")");
System.out.println(endDate.getDayOfWeek() + "(" + endDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'hh:mm:ss'Z'")) + ")");

输出:

星期一(2019-06-10T12:00:00Z)

周日(2019-06-16T11:59:59Z)