首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Java中找到每月的第一个工作日?

在Java中找到每月的第一个工作日可以使用Java的Calendar类来实现。

首先,我们需要获取当前月份的第一天的日期,可以使用以下代码:

代码语言:txt
复制
import java.util.Calendar;

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);

接下来,我们需要判断这一天是不是工作日。通常情况下,周一至周五为工作日,周六和周日为非工作日。我们可以通过判断Calendar对象的DAY_OF_WEEK字段来确定日期是星期几,然后根据星期几的值进行判断。

以下是判断日期是否为工作日的代码:

代码语言:txt
复制
import java.util.Calendar;

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);

// 获取星期几
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

// 判断是否为工作日
if (dayOfWeek >= Calendar.MONDAY && dayOfWeek <= Calendar.FRIDAY) {
    // 是工作日,输出日期
    System.out.println("第一个工作日是:" + calendar.getTime());
} else {
    // 不是工作日,将日期设置为下一个工作日
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    
    // 循环判断直到找到工作日
    while (calendar.get(Calendar.DAY_OF_WEEK) < Calendar.MONDAY || 
            calendar.get(Calendar.DAY_OF_WEEK) > Calendar.FRIDAY) {
        calendar.add(Calendar.DAY_OF_MONTH, 1);
    }
    
    // 输出第一个工作日
    System.out.println("第一个工作日是:" + calendar.getTime());
}

此代码将获取当前月份的第一天,并判断是否为工作日。如果是工作日,则直接输出该日期;如果不是工作日,则将日期向后推移,直到找到第一个工作日为止。最后输出找到的第一个工作日。

在腾讯云中,您可以使用腾讯云提供的云计算服务进行开发和部署。具体推荐的相关产品和产品介绍链接地址可以参考腾讯云官方网站的相关文档和产品页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

「Spring Boot 2.4 新特性」新增通用宏简化Cron表达式

此处理器是基于 java.util.Calendar局限性比较大,无法完成last day of month 语义。...| ∨ * * * * * * ^ | 每月第几天 如上其中 每月第几天、每周第几天 支持 最后几天 (L)...语义 例如: 0 0 0 L * * 每月最后一天零时 0 0 0 L-3 * * 每月最后第三天零时 (L-d 格式) 0 0 0 * * 5L 每月最后星期五零时 (dL...格式) 0 0 0 * * FRIL 每月最后星期五零时 ( (星期一星期天英文缩写)L 格式) 增强原有表达式 工作日 * * * * * * ^ |...每月第几天 如上其中 每月第几天 支持 工作日 (W)语义 例如: 0 0 0 1W * * 每月第一个工作日零时 0 0 0 LW * * 每月最后一个工作日零时 增强原有表达式 几周星期几

1.1K10

Hybris CronJob

一、概念     CronJobs提供了在特定时间或者间隔内处理业务逻辑方法。一般创建一个Cronjob有两种方式,第一种是定义Java类,由Hybris生成脚本并加入数据库。...其中每个元素可以是一个值(6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。...例如在周字段上设置"6L"这样格式,则表示“本月最后一个星期五" W 表示离指定日期最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近那个工作日触发。...如果指定格式为 "1W",它则表示每月1号往后最近工作日触发。如果1号正是周六,则将在3号下周一触发。...每月第一个中午开始每隔5天触发一次 0 11 11 11 11 ?  每年11月11号 11点11分触发(光棍节) 五、运行Cronjob ?

1.4K90
  • Cron表达式

    L 最后(Last) L 最后(Last) 在日字段设置上,表示当月最后一天(6月31日、9月30日,会判断闰年2月); 在周字段上则表示星期六,是按照西方习惯,此时就等于"7"或"SAT...在"L"前加上数字,则表示该数据最后一个。例如在周字段上设置为"5L",则表示“当前月最后一个星期四" W 最近工作日 离指定日期最近工作日设置为10W,则表示离10日最近工作日。...如果10日为工作日,则触发,如果10日喂周六,则在周五触发,如果10日为周六,则在下周一触发。 # 序号 表示每月第几个周几,在周字段上使用。设置为3#2,则表示在每月第2个周三。...每月15号上午10点15分触发 0 15 10 L * ? 每月最后一天10点15分触发 0 15 10 ? * 6L 每月最后一周星期五10点15分触发 0 15 10 ?...每月第一个中午开始每隔5天触发一次 0 11 11 11 11 ? 每年11月11号 11点11分触发(光棍节)

    4.2K30

    spring-quartz 调度任务配置

    -- 第一个调度配置 --> <!...例如在周字段上设置"6L"这样格式,则表示“本月最后一个星期五" W 表示离指定日期最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近那个工作日触发。...如果指定格式为 "1W", 它则表示每月1号往后最近工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体数字,不允许区间"-")....如果在日字段上设置"LW",则表示在本月最后一个工作日触发(一般指发工资 ) # 序号(表示每月第几个周几),例如在周字段上设置"6#3"表示在每月第三个周六.注意如果指定"#5",正好第五周没有周六...每月第一个中午开始每隔5天触发一次 0 11 11 11 11 ? 每年11月11号 11点11分触发(光棍节)

    78500

    java 定时任务 quartz 时间表达式Cron总结

    :表示每月某一天,或每周某一天 "L":用于每月或每周,表示为每月最后一天,或每个月最后一个星期几 "6L" 表示 “每月最后一个星期五” "W":表示为最近工作日 "15W" 放在每月...(day-of-month)字段上表示为 “到本月 15 日最近工作日” "#":是用来指定每月第 n 个工作日,例如在每周(day-of-week)这个字段中内容为 "6#3" or "FRI#3"... 则表示 “每月第三个星期五” Cron 表达式格式: 秒 分 时 日 月 周 年 (可选) 只有日和周可以为 "?".../ L C # 年 (可选字段) empty, 1970-2099 , - * / java 项目 from  fhadmin.cn “?”...n/m 表示从 n 开始,每次增加 m “L” 字符:用在日表示一个月中最后一天,用在周表示该月最后一个星期 X “W” 字符:指定离给定日期最近工作日 (周一到周五) “#” 字符:表示该月第几个周

    1.5K20

    @Scheduled注解各参数详解

    在月字段上设置’1/3’所示每月1号开始,每隔三天触发一次。 L 表示最后意思。...例如在周字段上设置”6L”这样格式,则表示“本月最后一个星期五” W 表示离指定日期最近那个工作日(周一至周五). 例如在日字段上置”15W”,表示离每月15号最近那个工作日触发。...如果15号正好是周六,则找最近周五(14号)触发, 如果15号是周未,则找最近下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。...如果指定格式为 “1W”,它则表示每月1号往后最近工作日触发。如果1号正是周六,则将在3号下周一触发。(注,”W”前只能设置具体数字,不允许区间”-“)。...# 序号(表示每月第几个周几),例如在周字段上设置”6#3”表示在每月第三个周六.注意如果指定”#5”,正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了) ;小提示:’L’和 ‘

    2.3K30

    自媒体作者评奖活动 (10月)

    (出现数据相同情况),最佳作者以作者在云+社区累计发布文章数为准,取数量多者为获奖者;若此项数据也相同,取单篇文章阅读数最高者;优秀作者数据相同则取单篇文章阅读数最高者; 7、活动统计时间为每月1...;(文章发布在社区需要审核,审核时间不超过7个工作日) 6、如果获奖人数超过设定奖项人数(出现数据相同情况),最佳作者以作者在云+社区累计发布文章数为准,取数量多者为获奖者;若此项数据也相同,取单篇文章阅读数最高者...;优秀作者数据相同则取单篇文章阅读数最高者; 7、活动统计时间为每月1日00:00至每月最末日23:59,下月第6个工作日公布上月获奖结果; 8、腾讯云代金券仅发放至作者个人腾讯云账号,不得赠送、...;(文章发布在社区需要审核,审核时间不超过7个工作日) 6、如果获奖人数超过设定奖项人数(出现数据相同情况),最佳作者以作者在云+社区累计发布文章数为准,取数量多者为获奖者;若此项数据也相同,取单篇文章阅读数最高者...;优秀作者数据相同则取单篇文章阅读数最高者; 7、活动统计时间为每月1日00:00至每月最末日23:59,下月第6个工作日公布上月获奖结果; 8、腾讯云代金券仅发放至作者个人腾讯云账号,不得赠送、

    6.1K27012

    @scheduled注解配置时间(spring定时器注解)

    例如在周字段上设置”6L”这样格式,则表示“本月最后一个星期五” 7、W 表示离指定日期最近那个工作日(周一至周五). 例如在日字段上置”15W”,表示离每月15号最近那个工作日触发。...如果15号正好是周六,则找最近周五(14号)触发, 如果15号是周未,则找最近下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。...如果指定格式为 “1W”,它则表示每月1号往后最近工作日触发。如果1号正是周六,则将在3号下周一触发。(注,”W”前只能设置具体数字,不允许区间”-“)。...8、#序号(表示每月第几个周几),例如在周字段上设置”6#3”表示在每月第三个周六.注意如果指定”#5”,正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了) ;小提示:’L’和...每天0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ? 2. zone 时区,接收一个java.util.TimeZone#ID。cron表达式会基于该时区解析。

    5.1K20

    电商用户复购实战:图解 pandas 移动函数 shift

    注意这里移动都是数据,而索引是不移动,移动之后没有对应值,就赋值为NaN。...上面的shift函数中使用就是这些别名,具体如下表所示: B 工作日频率 C 自定义工作日频率 D 日历日频率 W 每周频率 M 每月最后一个日历日 SM 每半个月最后一个日历日(15日和月末) BM...每月最后一个工作日 CBM 自定义每月最后一个工作日 MS 每月第一个日历日 SMS 每半月第一个日历日(第1和第15) BMS 每月第一个工作日 CBMS 自定义每月第一个工作日 Q 每季度最后一个月最后一个日历日...BQ 每季度最后一个月最后一个工作日 QS 每季度最后一个月第一个日历日 BQS 每季度最后一个月第一个工作日 A, Y 每年最后一个日历日 BA, BY 每年最后一个工作日 AS, YS...每年第一个日历日 BAS, BYS 每年第一个工作日 BH 工作日按“时”计算频率 H 每小时频率 T, min 每分钟频率 S 每秒频率 L, ms 毫秒频率 U, us 微秒频率 N 纳秒频率

    1.9K20

    2行代码搞定一个定时器!

    在日字段上设置’1/3’所示每月1号开始,每隔三天触发一次。 L 表示最后意思。...例如在周字段上设置”6L”这样格式,则表示“本月最后一个星期五” W 表示离指定日期最近那个工作日(周一至周五). 例如在日字段上置”15W”,表示离每月15号最近那个工作日触发。...如果15号正好是周六,则找最近周五(14号)触发, 如果15号是周未,则找最近下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。...如果指定格式为 “1W”,它则表示每月1号往后最近工作日触发。如果1号正是周六,则将在3号下周一触发。(注,”W”前只能设置具体数字,不允许区间”-“)。...# 序号(表示每月第几个周几),例如在周字段上设置”6#3”表示在每月第三个周六.注意如果指定”#5”,正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了) ;小提示:’L’和 ‘

    53110

    自媒体作者评奖活动(12月)&11月获奖名单

    二、活动时间 2019.12.1-2019.12.31 ps.评奖内容每月更新,本规则为2019年12月活动规则;此后每个月奖项设置、具体奖品和活动规则可能会有所不同,请各位作者关注每个月活动公告...二、活动时间 2019.11.1-2019.11.30 ps.评奖内容每月更新,本规则为2019年11月活动规则;此后每个月奖项设置、具体奖品和活动规则可能会有所不同,请各位作者关注每个月活动公告...,成为新自媒体作者; 4、若当月不存在符合获奖条件作者,则该奖项当月取消; 5、统计时以文章在腾讯云开发者社区发布时间为准;(文章发布在社区需要审核,审核时间不超过7个工作日) 6、如果获奖人数超过设定奖项人数...(出现数据相同情况),最佳作者以作者在云+社区累计发布文章数为准,取数量多者为获奖者;若此项数据也相同,取单篇文章阅读数最高者;优秀作者数据相同则取单篇文章阅读数最高者; 7、活动统计时间为每月1...日00:00至每月最末日23:59,下月第6个工作日公布上月获奖结果; 8、腾讯云代金券仅发放至作者个人腾讯云账号,不得赠送、转卖; 9、腾讯云开发者社区将在作者群、腾讯云开发者社区专栏公布获奖结果

    5.1K2994

    Quartz之CronTrigger

    CronTrigger,你可以指定触发时间表“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“。...X “W”字符:指定离给定日期最近工作日(周一到周五) 例如: “15W”放在每月(day-of-month)字段上表示为“到本月15日最近工作日” “#”字符:表示该月第几个周X。...6#3表示该月第3个周五 例如: 在每周(day-of-week)这个字段中内容为”6#3” or “FRI#3” 则表示“每月第三个星期五” 常用Cron表达式 每隔5秒执行一次:/5 *...每月1号凌晨1点执行一次:0 0 1 1 * ? 每月最后一天23点执行一次:0 0 23 L * ? 每周星期天凌晨1点实行一次:0 0 1 ?...下载地址: https://bintray.com/artifact/download/wjw465150/Java/CronExpBuilder.jar github地址:https://github.com

    1.8K10

    QuartZ Cron表达式

    CronTrigger,你可以指定触发时间表“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“。...:表示每月某一天,或第周某一天 “L”:用于每月,或每周,表示为每月最后一天,或每个月最后星期几“6L”表示“每月最后一个星期五” “W”:表示为最近工作日“15W”放在每月(day-of-month...)字段上表示为“到本月15日最近工作日” “#”:是用来指定每月第n个工作日,例 在每周(day-of-week)这个字段中内容为"6#3" or "FRI#3" 则表示“每月第三个星期五” Cron...n/m表示从n开始,每次增加m “L”字符:用在日表示一个月中最后一天,用在周表示该月最后一个星期X “W”字符:指定离给定日期最近工作日(周一到周五) “#”字符:表示该月第几个周X。...每月1号凌晨1点执行一次:0 0 1 1 * ? 每月最后一天23点执行一次:0 0 23 L * ? 每周星期天凌晨1点实行一次:0 0 1 ?

    67340

    何在工作日自动发送提醒?如何设置每3天提醒一次?

    在日常工作中,经常会有一些在工作日固定提醒,如在每个工作日提醒打卡。...在现在市面上定时提醒相关功能基本都只能设置每天提醒或固定的如每周五,而腾讯云HiFlow中定时启动,却逐渐在玩家们呼喊声中逐渐智能。腾讯云HiFlow是什么?...没关系,我们可以零代码连接你多个应用,鼠标轻点即可轻松设置自动化工作流程&数据流程,通过腾讯腾讯云HiFlow,你可以轻松快速实现如下自动化流程: ● 每周五9点,自动发送企业微信群通知,收集周报...【定时启动】是腾讯轻联中常用触发器,主要用于在指定时间发起触发,每个工作日上午10:00提醒打卡。目前定时启动支持每分钟、每小时、每天、每星期、每月等多个不同维度。...● 每月触发支持”每月最后一天“,遇到大小月情况智能识别,1月31号触发、4月则在30日触发。 ● 支持”每X天”触发,每3天提醒一次,灵活配置周期性提醒。图片

    66020

    时间序列 | pandas时间序列基础

    时间序列数据意义取决于具体应用场景,主要有以下几种: 时间戳(timestamp),特定时刻。 固定时期(period),2008年1月或2020年全年。...) M MonthEnd 每月最后一个日历日 BM BusinessMonthEnd 每月最后一个工作日 MS MonthBegin 每月第一个日历日 BMS BusinessMonthBegin 每月第一个工作日...BusinessQuarterBegin 对于以指定月份结束年度、每季度最后一月第一个工作日 A-JAN、A-FEB......BusinessYearEnd 每年指定月份最后一个工作日 AS-JAN、As-FEB YearBegin 每年指定月份第一个日历日 BAS-JAN、BAS-FEB......BusinessYearnBegin 每年指定月份第一个工作日 有时,虽然起始和结束日期带有时间信息,但你希望产生一组被规范化 (normalize)到午夜时间戳。

    1.5K30

    Data Science | 这些时间序列骚操作啊

    # BQ-月:指定月为季度末,每个季度末最后一月最后一个工作日 # BA-月:每年指定月份最后一个工作日 生成指定规律特殊时间: print(pd.date_range('2017','2018...2020', freq = 'QS-DEC')) print(pd.date_range('2017','2020', freq = 'AS-DEC')) print('------') # M:每月第一个日历日...# QS-月:指定月为季度末,每个季度末最后一月第一个日历日 # AS-月:每年指定月份第一个日历日 print(pd.date_range('2017','2018', freq = 'BMS...', freq = 'BQS-DEC')) print(pd.date_range('2017','2020', freq = 'BAS-DEC')) print('------') # BMS:每月第一个工作日...# BQS-月:指定月为季度末,每个季度末最后一月第一个工作日 # BAS-月:每年指定月份第一个工作日 freq使用(3) - 复合频率使用 生成指定复合频率时间序列: print(pd.date_range

    75220

    Quartz定时任务时间格式配置说明

    例如在周字段上设置"6L"这样格式,则表示“本月最后一个星期五" W :表示离指定日期最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近那个工作日触发。...如果15号正好是周六,则找最近周五(14号)触发, 如果15号是周未,则找最近下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。...如果指定格式为 "1W",它则表示每月1号往后最近工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体数字,不允许区间"-"). 'L'和 'W'可以一组合使用。...如果在日字段上设置"LW",则表示在本月最后一个工作日触发 # :序号(表示每月第几周星期几),例如在周字段上设置"6#3"表示在每月第三个周星期六.注意如果指定"6#5",正好第五周没有星期六...* 6#3  每月第三周星期五开始触发 0 0 12 1/5 * ?  每月第一个中午开始每隔5天触发一次 0 11 11 11 11 ?

    69840

    spring-quartz_价值是使用价值基础和内容

    Spring Quartz 定时任务 前言 Quartz 是一个完全由 Java 编写开源任务调度框架,按照规定计划完成任务,每周三凌晨一点进行数据备份,或者按时间隔触发一次任务调度,每十分钟同步一些状态信息...一般用于第四位参数或第六位参数占位 - 表示一个区间范围 / 表示间隔多久 , 表示枚举 L 一般用于第四位参数或第六位参数,最后一月或最后一周 W 表示有效工作日(1-5) # 表示第几个星期几...LW 表示某月最后一个工作日 (3)Cron 表达式示例 cron 说明 0 0 3 * * ?...每天8点10分,8点20分触发 0 0 1-3 * * ? 每天1点至三点每小时触发一次 0 0 8 L * ? 每月最后一天8点触发 0 10 12 ?...* 6#3 每月第三个星期五12:10分触发 0 10 12 ?

    52710

    Quartz CronTrigger最完整配置说明

    例如在周字段上设置"6L"这样格式,则表示“本月最后一个星期五" W 表示离指定日期最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近那个工作日触发。...如果15号正好是周六,则找最近周五(14号)触发, 如果15号是周未,则找最近下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。...如果指定格式为 "1W",它则表示每月1号往后最近工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体数字,不允许区间"-")....如果在日字段上设置"LW",则表示在本月最后一个工作日触发(一般指发工资 ) ?...每月第一个中午开始每隔5天触发一次 0 11 11 11 11 ?

    65931
    领券