如何使用Java 8确定每周和每年的日期

时间:2019-06-11 15:42:52

标签: java date datetime calendar java-time

我需要一个正在研究的项目来查询给定日期范围内的API-在这种情况下是一周,例如:

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

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

周-23

年份-2019

是否有使用Java 8确定对应的日子的好方法?

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

1 个答案:

答案 0 :(得分:1)

由于您知道一周有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)

SUNDAY(2019-06-16T11:59:59Z)