加载中...
加载中...
JAVA 获取一年的工作日

JAVA 获取一年的工作日 原创

JAVA 获取一年的工作日。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
* 获取一年的工作日
*/
public class HolidayUtils {

private static SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");
private static SimpleDateFormat MM = new SimpleDateFormat("MM");
/**节假日**/
private static List<String> holidayList = new ArrayList<String>();
/**补班日**/
private static List<String> workList = new ArrayList<String>();

static {
/**特殊的日期可以单独配置到数据库**/
holidayList.add("2023-01-01"); //元旦
holidayList.add("2023-01-02"); //元旦
holidayList.add("2023-01-21"); //春节
holidayList.add("2023-01-22"); //春节
holidayList.add("2023-01-23"); //春节
holidayList.add("2023-01-24"); //春节
holidayList.add("2023-01-25"); //春节
holidayList.add("2023-01-26"); //春节
holidayList.add("2023-01-27"); //春节
workList.add("2023-01-28"); //春节-补班
workList.add("2023-01-29"); //春节-补班
holidayList.add("2023-04-05"); //清明节
workList.add("2023-04-23"); //劳动节-补班
workList.add("2023-05-06"); //劳动节-补班
holidayList.add("2023-04-29"); //劳动节
holidayList.add("2023-04-30"); //劳动节
holidayList.add("2023-05-01"); //劳动节
holidayList.add("2023-05-02"); //劳动节
holidayList.add("2023-05-03"); //劳动节
holidayList.add("2023-06-22"); //端午节
holidayList.add("2023-06-23"); //端午节
workList.add("2023-06-24"); //端午节
holidayList.add("2023-06-25"); //端午节-补班
holidayList.add("2023-09-29"); //中秋/国庆节
holidayList.add("2023-09-30"); //中秋/国庆节
holidayList.add("2023-10-01"); //中秋/国庆节
holidayList.add("2023-10-02"); //中秋/国庆节
holidayList.add("2023-10-03"); //中秋/国庆节
holidayList.add("2023-10-04"); //中秋/国庆节
holidayList.add("2023-10-05"); //中秋/国庆节
holidayList.add("2023-10-06"); //中秋/国庆节
workList.add("2023-10-07"); //中秋/国庆节-补班
workList.add("2023-10-08"); //中秋/国庆节-补班

}
public static void main(String[] args) throws Exception{
printYearAllWorkDay(2023);
}

public static void printYearAllWorkDay(Integer year) throws Exception{
System.out.println(year+"年工作日如下---------------");
/**某年所有工作日**/
List<String> dateListByYear = getYearAllWorkDay(year);
int mm = 1;
int mmCount = 0;
System.out.println(year+"年工作日共有"+dateListByYear.size()+"天");
for (int i = 0; i < dateListByYear.size(); i++) {
String date = dateListByYear.get(i);
Integer month = Integer.valueOf(MM.format(yyyyMMdd.parse(date)));
if(mm != month){
mm = month;
System.out.println("\n"+year+"年"+(mm-1)+"月工作日,共"+mmCount+"天");
mmCount = 0;
System.out.println("\n"+year+"年"+mm+"月工作日---------------");
}
mmCount++;
System.out.print(date+",");
}
}

/**
* 计算指定年份的所有工作日,格式如 yyyy-MM-dd
* @param year
* @return
*/
private static List<String> getYearAllWorkDay(Integer year) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
List<String> allDateList = new ArrayList<>();
try {
Calendar ca=Calendar.getInstance();
ca.setTime((new SimpleDateFormat("yyyy")).parse(year+""));
while(true){
Date time = ca.getTime();
String date1 = yyyyMMdd.format(time.getTime());
if(isWorkDay(time)){ //工作日
allDateList.add(date1);
}
ca.add(Calendar.DAY_OF_YEAR, 1); //加一天
if(ca.get(Calendar.YEAR)>year)
break;
}
} catch (ParseException e) {
e.printStackTrace();
}
return allDateList;
}


/**
* 判断一个日期是否为工作日(考虑节假日,补班日)
* @param date
* @return
*/
public static boolean isWorkDay(Date date) {
Calendar cd = Calendar.getInstance();
cd.setTime(date);
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
Date time = cd.getTime();
String format2 = yyyyMMdd.format(time);
/**处理周一~周五补班**/
if(workList.contains(format2)){
return true;
}
/**节假日**/
if(holidayList.contains(format2)){
return false;
}
if (dayOfWeek != Calendar.SUNDAY && dayOfWeek != Calendar.SATURDAY){
return true;
}
return false;
}

}


没有更多推荐了 [去首页]
image
文章
376
原创
293
转载
83
翻译
0
访问量
183397
喜欢
73
粉丝
5
码龄
7年
资源
3

文章目录

加载中...
0
0