答案取决于您对“下一个星期三”的定义;-)
JSR-310使用TemporalAdjusters类提供了两个选项。
第一个选项是next():
LocalDate input = LocalDate.now();LocalDate nextWed = input.with(TemporalAdjusters.next(DayOfWeek.WEDNESDAY));
第二个选项是nextOrSame():
LocalDate input = LocalDate.now();LocalDate nextWed = input.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
两者取决于输入日期是星期几。
如果输入日期为2014-01-22(星期三),则:
next()
将于一周后返回2014-01-29nextOrSame()
将返回2014-01-22,与输入内容相同
如果输入日期为2014-01-20(星期一),则:
next()
将返回2014-01-22nextOrSame()
将返回2014-01-22
即。
next()总是返回一个较晚的日期,而
nextOrSame()如果匹配则将返回输入日期。
请注意,使用静态导入时,两个选项看起来都更好:
LocalDate nextWed1 = input.with(next(WEDNESDAY));LocalDate nextWed2 = input.with(nextOrSame(WEDNESDAY));
TemporalAdjusters还包括匹配
previous()和
previousOrSame()方法。



