Java 在JSR-310中查找一周中某一天的下一个事件

Java 在JSR-310中查找一周中某一天的下一个事件,java,datetime,java-8,java-time,Java,Datetime,Java 8,Java Time,给定一个JSR-310对象,例如LocalDate,如何查找下周三(或一周中的任何其他日子)的日期 LocalDate today = LocalDate.now(); LocalDate nextWed = ??? 答案取决于你对“下周三”的定义——) JSR-310使用该类提供了两个选项 第一种选择是: 第二种选择是: 根据输入日期是星期几,两者有所不同 如果输入日期为2014-01-22(星期三),则: next()将在一周后返回2014-01-29 nextOrSame()将返回20

给定一个JSR-310对象,例如
LocalDate
,如何查找下周三(或一周中的任何其他日子)的日期

LocalDate today = LocalDate.now();
LocalDate nextWed = ???

答案取决于你对“下周三”的定义——)

JSR-310使用该类提供了两个选项

第一种选择是:

第二种选择是:

根据输入日期是星期几,两者有所不同

如果输入日期为2014-01-22(星期三),则:

  • next()
    将在一周后返回2014-01-29
  • nextOrSame()
    将返回2014-01-22,与输入相同
如果输入日期为2014-01-20(星期一),则:

  • next()
    将返回2014-01-22
  • nextOrSame()
    将返回2014-01-22
例如,
next()
总是返回一个更晚的日期,而
nextOrSame()
将返回匹配的输入日期

请注意,使用静态导入时,这两个选项看起来都更好:

LocalDate nextWed1 = input.with(next(WEDNESDAY));
LocalDate nextWed2 = input.with(nextOrSame(WEDNESDAY));
temporaladjusts
还包括匹配的
previous()
previousorname()
方法

LocalDate input = LocalDate.now();
LocalDate nextWed = input.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
LocalDate nextWed1 = input.with(next(WEDNESDAY));
LocalDate nextWed2 = input.with(nextOrSame(WEDNESDAY));