鉴于JSR-310对象,例如LocalDate
,我如何找到下周三(或任何其他星期几)的日期?
LocalDate today = LocalDate.now();
LocalDate nextWed = ???
答案 0 :(得分:17)
答案取决于你对“下周三”的定义; - )
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()
方法。