当前位置: 首页 > 面试题库 >

在JSR-310中查找某天的下一次出现

岑鸣
2023-03-14
问题内容

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



 类似资料:
  • 问题内容: 您能否说明一下如何为默认系统时区和给定时区获取正确的纪元时间(以毫秒为单位)。 给定 1.时区:GMT + 3 2.以下代码段: 3.输出: 4. System.currentTimeMillis()的 JavaDoc,它指示返回值将是 当前时间与UTC 1970年1月1日午夜之间的差(以毫秒为单位)。 所以为什么 at 的输出与of的输出相同,尽管提及的文档? at 的输出与有所不同

  • 问题内容: 如果一个月的大写或小写(即不是标题),则DateTimeFormatter无法解析日期。有没有简单的方法可以将日期转换为标题大小写,还是可以使格式化程序更宽松? 版画 问题答案: s是严格的,默认情况下区分大小写。使用和指定以区分大小写。 为了能够解析数字月份(即),您还需要指定。 您也可以更冗长地指定仅月份部分为不区分大小写/宽大: 从理论上讲,这可能会更快,但我不确定是否可以。 P

  • 本文向大家介绍MySQL中查询某一天, 某一月, 某一年的数据代码详解,包括了MySQL中查询某一天, 某一月, 某一年的数据代码详解的使用技巧和注意事项,需要的朋友参考一下 今天 昨天(包括昨天和今天的数据) 昨天(只包括昨天) 近7天 近30天 本月 上一月 查询本季度数据 查询上季度数据 查询本年数据 查询上年数据 查询当前这周的数据 查询上周的数据 查询上个月的数据 查询当前月份的数据 查

  • 问题: > 你对Threeten有什么经验?是否存在一些弊端? 与官方的实现相比,该项目的兼容性如何?

  • 问题内容: 我的问题是:有没有办法像Oracle SQL函数一样在Hive中查找一个月的最后一天?: 谢谢。 问题答案: 您可以使用Nexr提供的UDF。它基于带有yyyy-MM-dd HH:mm:ss模式的日期字符串返回月份的最后一天。 您需要从其Github存储库中提取它并进行构建。他们的Wiki页面包含有关如何在Hive中进行构建和使用的所有信息。

  • rank ▲ ✰ vote url 42 465 90 791 url 查找列表中某个元素的下标 比如["foo","bar","baz"]和它的一个元素"bar",用什么方法能找到它的下标(1)? >>> ["foo","bar","baz"].index('bar') 1 参考资料:Data Structures > More on Lists