根据参数或当前月,获取本月第一个工作日
前言
这里我们列举两个方法:
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中的方法获取本月第一个工作日,有可能会获取到下周的第一个工作日。