给定一个 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-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()
方法。
关于java - 在 JSR-310 中查找下一个星期几,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21242809/