`
120153216
  • 浏览: 59476 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JAVA 节假日 判断和配置

    博客分类:
  • java
 
阅读更多
JAVA 节假日 判断和配置

实现类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));
}

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics