java判断是否工作日_JAVA判断当前日期是节假日还是工作日

package com.buybal.bat.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.List;

import org.apache.log4j.Logger;

import jxl.Cell;

import jxl.CellType;

import jxl.DateCell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.WorkbookSettings;

import jxl.read.biff.BiffException;

/**

* 根据读取配置的excel判断是否为法定节假日,及法定工作日

* @author Administrator

*

*/

public class HolidayUtil {

private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

private List holidays = new ArrayList();

private List workdays = new ArrayList();

private Date now = new Date();

private Logger logger = Logger.getLogger(HolidayUtil.class);

/**

* 判断当天是否是工作日 (工作日:true;节假日:false)

* @param filePath

* @return

*/

public boolean isWorkDay(String filePath){

boolean flag = true;

parseExcel(filePath);//读取excel中的节假日和工作日

int dateType = getDateType();

//如果excel不存在当前日期。判断是否周六日

if(dateType==0){

Calendar c = Calendar.getInstance();

if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY||

c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){

flag = false;

}

}else{//如果存在当前日期,根据返回的类型判断

if(dateType==1){//节假日

flag = false;

}

/* else if(dateType==2){//工作日

flag = true;

}*/

}

logger.info("当前日期是:"+(flag==true?"工作日":"节假日"));

return flag;

}

/**

* 根据判断当前时间是否是节假日还是工作日 (excel中不存在当前日期:0;节假日:1;工作日:2)

* 如果当前日期在excel中的节假日和工作日都写了,默认的工作日

* @return

*/

private int getDateType(){

int type = 0;

String today = sdf.format(now);

if(holidays.size()>0){

for(String holiday:holidays){

if(holiday.equals(today)){

type = 1;

break;

}

}

}

if(workdays.size()>0){

for(String workday:workdays){

if(workday.equals(today)){

type = 2;

}

}

}

return type;

}

/**

* 读取excel中的节假日和工作日

* @param filePath

*/

private void parseExcel(String filePath){

if(filePath==null||"".equals(filePath)){

return ;

}

Workbook workbook = null;

try {

workbook = Workbook.getWorkbook(new FileInputStream(filePath));

Sheet sheets[] = workbook.getSheets();

if(sheets==null||sheets.length==0){

return;

}

Sheet sheet = sheets[0];//取到第一个sheet

int rows = sheet.getRows();

//获取第一列数据-节假日

for(int rowIndex = 1;rowIndex

Cell cell = sheet.getCell(0, rowIndex);

if(cell==null){

break;

}

if(cell.getType() == CellType.DATE){

DateCell dateCell = (DateCell)cell;

Date date = dateCell.getDate();

String dateStr = sdf.format(date);

holidays.add(dateStr);

}

}

//获取第二列数据-工作日

for(int rowIndex = 1;rowIndex

Cell cell = sheet.getCell(1, rowIndex);

if(cell==null){

break;

}

if(cell.getType() == CellType.DATE){

DateCell dateCell = (DateCell)cell;

Date date = dateCell.getDate();

String dateStr = sdf.format(date);

workdays.add(dateStr);

}

}

logger.info(holidays.toString());

logger.info(workdays.toString());

} catch (BiffException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if(workbook!=null){

workbook.close();

workbook = null;

}

}

}

public static void main(String[] args) {

// HolidayUtil h = new HolidayUtil();

// boolean flag = h.isWorkDay("holidaySet.xls");

// boolean flag = h.isWorkDay("");

}

}

excel这么个样子,必须是最左边两列:

1c7dde9a94b8318769b206a387120761.png

如果excel中为空,就会只判断周六日是节假日

Java判断指定日期是否为工作日

Java判断指定日期是否为工作日 转自:https://www.jianshu.com/p/966659492f2f 转:https://www.jianshu.com/p/05ccb5783f65转 ...

java 判断日期是否是节假日

1.新建一个excel命名为“节假日.xls”存放节假日,模板格式如下 2.判断是否是节假日的类 工作日返回true ,休息日返回false. 需要引用poi-bin-3.9包,包放在博客文件中 im ...

PHP 判断当前日期是否是法定节假日或者休息日 (原)

//判断日期是不是节假日或者双休日接口 @param time [时间(时间戳或者Y-m-d都可)] public function get_type_by_date(){ $t = $_GET['t ...

使用Java判断字符串中的中文字符数量

Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...

判断当前日期是否在[startDate, endDate]区间

/** * 判断当前日期是否在[startDate, endDate]区间 * * @param startDate 开始日期 * @param endDate 结束日期 * @author jqli ...

Java判断回文数算法简单实现

好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

Java 判断操作系统类型(适用于各种操作系统)

Java 判断操作系统类型(适用于各种操作系统) 最近一段时间写一个授权的程序,需要获取很多信息来保证程序不能随意复制使用,必须经过授权才可以. 为了限制用户使用的操作系统,必须有统一的方法来获取才可 ...

java判断字符串是否为空的方法总结

http://blog.csdn.net/qq799499343/article/details/8492672 以下是java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观 ...

Java获取当前日期的前一个月,前一天的时间

Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -); //得到前一天 calendar.add(Cal ...

随机推荐

Linux系统调用和库函数调用的区别

Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions).系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思 ...

在CentOS安装cobbler自动化部署软件

#!/bin/bash##cobbler server addressip=192.168.119.133#DHCP server net and address fanweinet=192.168. ...

jquery tab

jquery tab

你可能感兴趣的:(java判断是否工作日)