当前位置: 首页 > 知识库问答 >
问题:

Java 8:查找特定月份后的第n天

公西永嘉
2023-03-14

在Java8中,我发现

TemporalAdjuster temporal = dayOfWeekInMonth(1,DayOfWeek.MONDAY) 

给出一个月的第一个星期一的时间,以及

next(DayOfWeek.MONDAY)

给出特定日期后的下一个星期一。

但是我想在具体日期后找到第n个星期一。

例如,我想要2017-06-06之后的第二个星期一,应该是2017-06-19,在哪里

dayOfWeekInMonth(2,DayOfWeek.MONDAY)

会给我2017-06-12和

next(DayOfWeek.MONDAY) 

当然没有第n天的指标参数。它将给出下一个第一个星期一,即2017年6月12日。

如何在不循环的情况下计算它?

共有1个答案

穆英飙
2023-03-14

编写TemporalAdjuster接口的实现。

找到下一个星期一,然后添加(N-1)周:

public static TemporalAdjuster nextNthDayOfWeek(int n, DayOfWeek dayOfWeek) {
    return temporal -> {
        Temporal next = temporal.with(TemporalAdjusters.next(dayOfWeek));
        return next.plus(n - 1, ChronoUnit.WEEKS);
    };
}

将您的临时调整器对象传递给LocalDate.with。获取另一个带有所需结果的LocalDate。

public static void main(String[] args) {
    LocalDate date = LocalDate.of(2017, 3, 7);
    date = date.with(nextNthDayOfWeek(2, DayOfWeek.MONDAY));
    System.out.println("date = " + date); // prints 2017-03-20
} 
 类似资料:
  • 问题内容: 如何知道特定年份的特定月份有多少天? 问题答案: Java 8及更高版本 @沃伦·诺科斯(Warren M. 如果你尝试使用Java 8的新Date and Time API,则可以使用java.time.YearMonthclass。请参阅Oracle教程。 测试:尝试a年的一个月: Java 7及更早版本 创建日历,设置年份和月份并使用 getActualMaximum 测试:尝试

  • 查找两个日期之间的月数的简单方法是=DATEDIF(DATE1; DATE2;"m"),其中DATE2必须大于DATE1。 我试图实现的是找到今天和未来日期之间的月份数。我希望=DATEDIF(MONTH(TODAY()); DATE2;"m")可以工作,但这会返回一个奇怪的结果(参见示例)。 =日期(今天);D ATE2;”m“) 或 = 日期;D ATE2;”m“) 将不起作用,因为在 11

  • 问题内容: 我想查找给定月份和年份的总天数。示例:我想 查找年份= 2015,月份= 7的总天数 问题答案: 首先NSDate为给定的年份和月份创建一个: 然后使用该rangeOfUnit()方法,如 使用iPhone SDK的当月天数中所述? Swift 3(Xcode 8)更新:

  • 本文向大家介绍使用PHP从给定的整数中查找月份,包括了使用PHP从给定的整数中查找月份的使用技巧和注意事项,需要的朋友参考一下 如果您需要从给定的整数(1到12)中了解月份,则可以使用以下代码段。这将返回字符串“ Feb”。 date("M", mktime(0, 0, 0, 2)); 可以将其封装到一个函数调用中,该函数调用将采用1到12之间的数字,并返回该月的相应字符串。此功能包括一些简单的错

  • 在给定年、月和周的情况下,是否有可能获得一周中第一个日期的DAYOFMONTH? 请注意,一周的第一个日期也可能是前一个月,甚至是前一年。 我知道这是可以通过编程实现的,至少使用java。时间、时间场等。。但我想在sql查询级别上这样做,因为当涉及周时,过程中会涉及两个额外的参数,即被视为一周的第一天的DayOfWeek和一个月内一周的最小天数。如果sql和api上的配置不完全相同,则可能会导致不

  • 问题内容: 我需要获取一个月的第一个日期和最后一个。获取第一个是微不足道的,但是获取最后一个似乎需要一些逻辑,因为月份的长度不同,而2月的长度甚至会随着年份而变化。是否已经在JodaTime中内置了对此机制,还是应该自己实现? 问题答案: 怎么样: 以知道来源的方式传回,代表a 代表[每月的月份]栏位。 碰巧的是,该方法甚至记录在案,以推荐它用于此特定任务: 由于月份长度不同,此操​​作对于在每月