java – 在JSR-310中查找星期几的下一个发生

给定一个JSR-310对象,如LocalDate,我如何找到下个星期三(或任何其他星期几)的日期?
LocalDate today = LocalDate.Now();
LocalDate nextWed = ???

解决方法

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

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-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));

TemporalAdjusters还包括匹配prevIoUs()和prevIoUsOrSame()方法.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...