gpt4 book ai didi

Java 8 : Find nth DayOfWeek after specific day of month

转载 作者:行者123 更新时间:2023-11-30 06:49:31 25 4
gpt4 key购买 nike

在 Java 8 中,我发现的是

TemporalAdjuster temporal = dayOfWeekInMonth(1,DayOfWeek.MONDAY) 

给出一个月第一个星期一的时间,

next(DayOfWeek.MONDAY)

给出特定日期后的下一个星期一。

但我想在特定日期之后找到第 n 个星期一。

例如,我想要 2017-06-06 之后的第二个星期一,它应该是 2017-06-19哪里

dayOfWeekInMonth(2,DayOfWeek.MONDAY)

会给我 2017-06-12 和

next(DayOfWeek.MONDAY) 

当然没有第 n 个 DayOfWeek 指标的参数。它将给出下一个星期一,即 2017-06-12。

如何在不循环的情况下计算它?

最佳答案

编写 TemporalAdjuster 的实现界面。

找到下一个星期一,然后添加 (N - 1) 周:

public static TemporalAdjuster nextNthDayOfWeek(int n, DayOfWeek dayOfWeek) {
return temporal -> {
Temporal next = temporal.with(TemporalAdjusters.next(dayOfWeek));
return next.plus(n - 1, ChronoUnit.WEEKS);
};
}

将您的 TemporalAdjuster 对象传递给 LocalDate.with .用你想要的结果取回另一个 LocalDate

public static void main(String[] args) {
LocalDate date = LocalDate.of(2017, 3, 7);
date = date.with(nextNthDayOfWeek(2, DayOfWeek.MONDAY));
System.out.println("date = " + date); // prints 2017-03-20
}

关于Java 8 : Find nth DayOfWeek after specific day of month,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42619409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com