mysql判断当前日期是否为节假日_java 判断日期是否是节假日

1.新建一个excel命名为“节假日.xls”存放节假日,模板格式如下

ca5a9ee6ae65f1ab7e9ad228934b6169.png

2.判断是否是节假日的类 工作日返回true ,休息日返回false。

需要引用poi-bin-3.9包,包放在博客文件中

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFDateUtil;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Festival {

private final String FILE_NAME = "节假日.xls";

private List festival = new ArrayList();// 节假日

private List workDay = new ArrayList();// 工作日

public Festival() {

File excel = this.getExcel();

try {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Java代码实现: 1. 首先需要创建一个节假日表的实体类,例如: ``` public class Holiday { private Long id; private Date date; // 节假日日期 private String name; // 节假日名称,如“元旦节”、“春节”等 private Boolean isHoliday; // 是否节假日,true表示是节假日,false表示是工作日 // 省略getter和setter方法 } ``` 2. 接着,需要编写一个方法来创建一整年的节假日表。这里以中国的法定节假日为例,代码如下: ``` public static List<Holiday> createHolidayTable(int year) { List<Holiday> holidayList = new ArrayList<>(); // 元旦节 holidayList.add(new Holiday(null, getDate(year, 1, 1), "元旦节", true)); // 春节 holidayList.add(new Holiday(null, getDate(year, 2, 4), "除夕", true)); // 除夕 holidayList.add(new Holiday(null, getDate(year, 2, 5), "春节", true)); // 春节第一天 holidayList.add(new Holiday(null, getDate(year, 2, 6), "春节", true)); // 春节第二天 holidayList.add(new Holiday(null, getDate(year, 2, 7), "春节", true)); // 春节第三天 holidayList.add(new Holiday(null, getDate(year, 2, 8), "春节", true)); // 春节第四天 holidayList.add(new Holiday(null, getDate(year, 2, 9), "春节", true)); // 春节第五天 holidayList.add(new Holiday(null, getDate(year, 2, 10), "春节", true)); // 春节第六天 // 清明节 holidayList.add(new Holiday(null, getDate(year, 4, 4), "清明节", true)); // 劳动节 holidayList.add(new Holiday(null, getDate(year, 5, 1), "劳动节", true)); // 端午节 holidayList.add(new Holiday(null, getDate(year, 6, 14), "端午节", true)); // 中秋节 holidayList.add(new Holiday(null, getDate(year, 9, 21), "中秋节", true)); // 国庆节 holidayList.add(new Holiday(null, getDate(year, 10, 1), "国庆节", true)); holidayList.add(new Holiday(null, getDate(year, 10, 2), "国庆节", true)); holidayList.add(new Holiday(null, getDate(year, 10, 3), "国庆节", true)); holidayList.add(new Holiday(null, getDate(year, 10, 4), "国庆节", true)); holidayList.add(new Holiday(null, getDate(year, 10, 5), "国庆节", true)); holidayList.add(new Holiday(null, getDate(year, 10, 6), "国庆节", true)); holidayList.add(new Holiday(null, getDate(year, 10, 7), "国庆节", true)); // 补班 holidayList.add(new Holiday(null, getDate(year, 2, 11), "春节调休", false)); holidayList.add(new Holiday(null, getDate(year, 2, 15), "春节调休", false)); holidayList.add(new Holiday(null, getDate(year, 4, 25), "清明节调休", false)); holidayList.add(new Holiday(null, getDate(year, 5, 8), "劳动节调休", false)); holidayList.add(new Holiday(null, getDate(year, 9, 27), "中秋节调休", false)); holidayList.add(new Holiday(null, getDate(year, 10, 10), "国庆节调休", false)); return holidayList; } private static Date getDate(int year, int month, int day) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(year, month - 1, day); // 月份从0开始计算,需要减1 return calendar.getTime(); } ``` 这个方法接收一个年份作为参数,返回一个List<Holiday>类型的节假日表。这里使用了一个getDate方法来获取指定日期的Date类型,需要注意的是,Calendar中的月份是从0开始计算的,需要在传入月份时减去1。 3. 最后,需要根据节假日判断当天日期是工作日、双休日还是节假日,代码如下: ``` @GetMapping("/checkDate") public String checkDate(@RequestParam("date") Date date) { List<Holiday> holidayList = createHolidayTable(2021); // 假设查询2021年的节假日表 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); for (Holiday holiday : holidayList) { if (isSameDay(date, holiday.getDate())) { if (holiday.getIsHoliday()) { return holiday.getName(); } else { return "工作日"; } } } if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) { return "周末"; } else { return "工作日"; } } private static boolean isSameDay(Date date1, Date date2) { Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(date1); Calendar calendar2 = Calendar.getInstance(); calendar2.setTime(date2); return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR) && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH) && calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH); } ``` 这个方法接收一个日期作为参数,先调用createHolidayTable方法获取当年的节假日表,然后通过Calendar获取当天是星期几,再遍历节假日表,判断当天是否节假日或工作日。如果是节假日,则返回节假日名称;如果是工作日,则返回“工作日”;如果是周末,则返回“周末”。其中,isSameDay方法用于判断两个日期是否为同一天

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值