使用java代码取本月第一个工作日

根据参数或当前月,获取本月第一个工作日


前言

这里我们列举两个方法:
1、没有参数,根据当前日期取当前月的第一个工作日;
2、根据参数日期,获取参数月的第一个工作日。


提示:以下是本篇文章正文内容,下面案例可供参考

一、根据当前日期获取当前月的第一个工作日

import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.*;

public static String getFirstWorkday(){
       Calendar cal = Calendar.getInstance();// 获取当前日期
       cal.add(Calendar.MONTH, 0);
       cal.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
       int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);//huo获取星期几,1代表星期日,2代表星期一,以此类推
       // 如果当前日期是周六或周日,则取下个周一,否则为当前日期
       if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) {
           LocalDate localDate = cal.getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
           LocalDate firstWorkday = localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
           return firstWorkday.toString();
       }
       return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}

二、根据参数日期,获取参数月的第一个工作日。

import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.*;

public static String getFirstWorkday(Date date){
       Calendar cal = Calendar.getInstance();// 获取当前日期
       cal.setTime(date);
       cal.add(Calendar.MONTH, 0);
       cal.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
       int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);//huo获取星期几,1代表星期日,2代表星期一,以此类推
       // 如果当前日期是周六或周日,则取下个周一,否则为当前日期
       if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) {
           LocalDate localDate = cal.getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
           LocalDate firstWorkday = localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
           return firstWorkday.toString();
       }
       return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}

总结

以上就是今天要讲的内容,需要注意的是,必须判断当月第一天是否为工作日,如果直接使用if中的方法获取本月第一个工作日,有可能会获取到下周的第一个工作日。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值