java - 在 JSR-310 中查找下一个星期几

标签 java datetime java-8 java-time

给定一个 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() 方法。

关于java - 在 JSR-310 中查找下一个星期几,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21242809/

相关文章:

java - ViewPager.setAdapter 需要 200 毫秒到 300 毫秒才能执行

java - 如何在单击列表中父级的特定项目时扩展子级?

python - 超过 24 小时的日期时间格式

python - DateTimeProperty 在 Google App Engine 中设置为日期时间时出错

java - 如何从 Java 类进行 SOAP Web 服务调用?

java - 如何为扫描仪使用两个分隔符

c++ - 在不强制转换的情况下打印 time_t 为 long int 会产生意外行为

java - 使用可选对象字段返回空对象或新对象

java - 数组无法解析?这是构建路径问题吗?

java - pkcs11异常解析配置: Unexpected value Token ['(' ]