实现类Festival.java,配置文件WEB-INF/节假日.xls 需POI包支持poi-2.5.1-final-20040804.jar
节假日.xls
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<Date> festival = new ArrayList<Date>();//节假日
private List<Date> workDay = new ArrayList<Date>();//工作日
public Festival(){
File excel = this.getExcel();
try {
FileInputStream fin = new FileInputStream(excel);
HSSFWorkbook hssfworkbook = new HSSFWorkbook(fin);
HSSFSheet sheet = hssfworkbook.getSheetAt(0);
int last = sheet.getLastRowNum();
int index = 1;
Date dt = null;
while(index<=last){
HSSFRow row = sheet.getRow(index);
/*读取法定节假日*/
HSSFCell cell = row.getCell((short)0);
if(cell!=null){
if(HSSFDateUtil.isCellDateFormatted(cell)){
dt = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
if(dt!=null&&dt.getTime()>0){
this.festival.add(dt);
}
}
}
/*读取特殊工作日*/
cell = row.getCell((short)1);
if(cell!=null){
if(HSSFDateUtil.isCellDateFormatted(cell)){
dt = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
if(dt!=null&&dt.getTime()>0){
//System.out.println(this.getDate(dt));
this.workDay.add(dt);
}
}
}
index++;
}
fin.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public File getExcel(){
File excel = null;
try {
URL url = Festival.class.getResource("/");
url = new URL(url,"../"+FILE_NAME);
excel = new File(url.getPath());
return excel;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return excel;
}
/**
* 从EXCEL文件中读取节假日
* @return
*/
public List getFestival(){
return this.festival;
}
public List getSpecialWorkDay(){
return this.workDay;
}
/**
* 判断一个日期是否日节假日
* 法定节假日只判断月份和天,不判断年
* @param date
* @return
*/
public boolean isFestival(Date date){
boolean festival = false;
Calendar fcal = Calendar.getInstance();
Calendar dcal = Calendar.getInstance();
dcal.setTime(date);
List<Date> list = this.getFestival();
for(Date dt:list){
fcal.setTime(dt);
//法定节假日判断
if(fcal.get(Calendar.MONTH)==dcal.get(Calendar.MONTH)&&
fcal.get(Calendar.DATE)==dcal.get(Calendar.DATE))
{
festival = true;
}
}
return festival;
}
/**
* 周六周日判断
* @param date
* @return
*/
public boolean isWeekend(Date date){
boolean weekend = false;
Calendar cal = Calendar.getInstance();
cal.setTime(date);
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||
cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
weekend = true;
}
return weekend;
}
/**
* 是否是工作日
* 法定节假日和周末为非工作日
* @param date
* @return
*/
public boolean isWorkDay(Date date){
boolean workday = true;
if(this.isFestival(date)||this.isWeekend(date)){
workday = false;
}
/*特殊工作日判断*/
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date);
Calendar cal2 = Calendar.getInstance();
for(Date dt:this.workDay){
cal2.setTime(dt);
if(cal1.get(Calendar.YEAR)==cal2.get(Calendar.YEAR)&&
cal1.get(Calendar.MONTH)==cal2.get(Calendar.MONTH)&&
cal1.get(Calendar.DATE)==cal2.get(Calendar.DATE)
){
//年月日相等为特殊工作日
workday = true;
}
}
return workday;
}
public Date getDate(String str){
Date dt = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
dt = df.parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dt;
}
public String getDate(Date date){
String dt = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
dt = df.format(date);
return dt;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Festival f = new Festival();
Date dt = f.getDate("2009-09-26");
System.out.println(f.isWorkDay(dt));
}
}
相关推荐
JAVA 节假日 判断和配置
Java节假日算法(免费)
* 01-给定日期,判断是否是休息日(包含法定节假日和不需要补班的周末)。 * 02-给定日期,判断是否是工作日(非休息日)。 * 03-获取一年中总共的天数。 * 04-获取一年中法定节假日的天数。 * 05-获取一年中需要...
输入日期可以判断当前日期是否是节假日或工作日,通过输入字符串类型的日期来判断。例:20190304进行判断,然后会返回相应的结果。
java代码先获取全年的周末周日,定义全年的法定节假日,然后根据输入的日期计算,当前日期后的工作日,也可以用于计算工作日
中国的节假日不是按照阳历就能够计算,在没有调接口的情况下,最好的办法就是在数据库里面维护相对应的对照表.这里就提供了一个工具类自动生成指定年份的节假日对照表
这是一个工具类,其中包括判断日期是否是节假日或工作日,以及判断n个工作日后的日期 例:20190304后的7个工作日是几号 输入类型为String类型
Java 实现将每年的节假日,周末,工作日详情记录至数据库表中 包括每年每天是否为工作日,充分考虑周末,节假日情况,亲测可用
家假日管理-java swing+mysql 可以从网络上同步法定节假日,双击或者右键改变节假日状态
主要介绍了基于Java代码实现判断春节、端午节、中秋节等法定节假日的方法 的相关资料,需要的朋友可以参考下
1、excel表数据为2022年周末休息日和法定节假日数据,并且备注周末和节假日类型,可导入数据库,用于计算两个日期相差的工作日天数(排除周末和法定节假日)。 2、SQL文件为2022年所有日期,并标注:工作日、法定节...
java计算整年工作日(包含特殊的工作日)排除法定节假日和周末能运行
Java 实现判断今天是工作日、假日、节假日。 其中有两个方法,一个方法是: /** * 获取今天日期值 */ public Date getCurrentDate() { return Calendar.getInstance().getTime(); } 另一个方法是: /** * ...
2019年最新的最全的节假日数据,提供各位需要!包含建表语句
这个接口的主要特点是,返回某个节日是否是工作日,节日和节假日,其准确度和国务院每年的通知完全匹配。 2.RollToolsApi通用系列接口包含多很多免费通用的API接口,利用这些接口可以帮你实现去开发出很多功能丰富,...
本程序实现了计算给定一段时间内有多少工作日,也可以输出所有工作日的日期,节假日判断。
网上排除节假日、周六周日 获取相差时间 分为四种情况, 精确到天 此工具类在此基础之上进行优化, 分为俩种情况, 精确到分钟,保留俩位小数 (精确到秒 需自己加工下) 入口方法: getWorkHours
Java法定节假日算法.docx
JAVA时间工具类(计算法定工作日工时):计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日),计算某个日期后一天的工作日期(除周末和法定节假日),计算两个日期的真实工作日(除周末和法定节假日),...
java 判断点在多边形内 java 判断点在多边形内 java 判断点在多边形内 java 判断点在多边形内 java 判断点在多边形内 Java GIS 多边形 Java点多边形