You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何获取未来n个每月前三个周五并实现对应过滤方法

实现方案

下面提供两种可直接使用的实现,效果完全符合你的需求:

方案1:极简原生实现(性能最优,无需依赖现有工具方法)

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.ChronoField;

public static boolean is1st2ndOr3rdFriday(LocalDate d) {
    // 非周五直接返回false,方法通用性更强
    if (d.getDayOfWeek() != DayOfWeek.FRIDAY) {
        return false;
    }
    // 直接获取当前日期是当月的第几个对应周几,取值范围1~5
    int dayOfWeekInMonth = d.get(ChronoField.DAY_OF_WEEK_IN_MONTH);
    return dayOfWeekInMonth <= 3;
}

方案2:复用你已有的nthFridayOfMonth实现

如果你需要复用现有工具方法逻辑,可采用如下写法:

import java.time.DayOfWeek;
import java.time.LocalDate;

public static boolean is1st2ndOr3rdFriday(LocalDate d) {
    // 非周五直接返回false,方法通用性更强
    if (d.getDayOfWeek() != DayOfWeek.FRIDAY) {
        return false;
    }
    // 判断当前日期是否匹配当月前三个周五中的任意一个
    return d.equals(nthFridayOfMonth(d, 1))
        || d.equals(nthFridayOfMonth(d, 2))
        || d.equals(nthFridayOfMonth(d, 3));
}

上述任意一种方法放入你的Stream过滤逻辑中,都可以得到你预期的输出结果。

内容的提问来源于stack exchange,提问作者wannaBeDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:36:02