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

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 {

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 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

Date date=new Date();//取时间

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

String dateString = formatter.format(date);

System.out.println(dateString);

Festival f = new Festival();

Date dt = f.getDate(dateString);

System.out.println(f.isWorkDay(dt));

}

}

mysql判断当前日期是否为节假日_java 判断日期是否是节假日相关推荐

  1. java判断日期是否节假日_java 判断日期是否是节假日

    标签: 1.新建一个excel命名为"节假日.xls"存放节假日,模板格式如下 2.判断是否是节假日的类 工作日返回true ,休息日返回false. 需要引用poi-bin-3. ...

  2. java怎么判断对象不为空_java判断对象是否为空的方法

    java判断对象是否为空的方法 发布时间:2020-06-25 14:39:17 来源:亿速云 阅读:134 作者:Leah 这篇文章将为大家详细讲解有关java判断对象是否为空的方法,文章内容质量较 ...

  3. java判断两个int相等_Java 判断两个变量是否相等

    判断两个变量是否相等的方式有两种:利用运算符 == 利用equals方法 (1)比较基本Java基本数据类型 比较基本数据类型,只能用"==",不能用equals,这里比较的是两个 ...

  4. java判断ftp创建目录是否成功_Java判断Ftp服务器目录是否存在,若不存在创建目录 ....

    解决方法1: package com.soft4j.log4j; import java.io.IOException; import sun.net.ftp.FtpClient; public cl ...

  5. java 判断一个词是不是成语_Java 判断字符串a和b是否互为旋转词

    旋转词:把字符串str的任意部分移动到后面形成的新字符串叫做字符串str的旋转词. 比如abc的旋转词有 abc,acb,cba,... 判断str1和str2是否互为旋转词,其最优解可以是时间复杂度 ...

  6. java判断输入值是否在数组_java判断特定值是否在数组中的方法

    java判断特定值是否在数组中的方法: 使用List:public static boolean useList(String[] arr, String targetValue) { return ...

  7. java 判断是否为cst格式_Java判断文件编码格式

    1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK. 按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理 ...

  8. java判断对象属性为空_Java判断对象属性全为空

    在项目中,处理复杂页面提交的时候,比如批量添加文章的时候,下面这种情况 当前页面存在多篇文章对象:后台我们接收一般使用 List,如下面这种格式提交news[0].content news[0].ti ...

  9. java判断200以内的素数_java判断101-200之间的素数并输出

    你知道java判断101到200之间的素数并且输出素数应该如何实现吗?下面就让我们一起来详细的了解一下吧! 一.题目 判断101-200之间有多少个素数,并且输出所有素数. 二.思路 判断素数的方法 ...

最新文章

  1. Python 一种接触就容易爱上的语言一
  2. 使用gluoncv.model_zoo进行目标检测
  3. 新的C库Bionic的介绍
  4. 阿里云ECS家族再添新成员,推出密集计算型实例规格族ic5
  5. 全新iPhone“Pro”命名要实锤:新增配色是“原谅色”本色吧?
  6. Java基础学习总结(41)——JPA常用注解
  7. 浙大 pat 1023题解
  8. 阶段3 1.Mybatis_12.Mybatis注解开发_7 Mybatis注解开发一对多的查询配置
  9. CentOS6.3 编译安装LAMP(4):编译安装 PHP5.3.27
  10. SnagIt怎么使用 SnagIt使用教程
  11. android安卓字体下载,安卓手机字体29款打包下载
  12. mysql select 列名_Mysql查询出所有列名
  13. 【树莓派】树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置
  14. MobSF分析.ipa文件,MobSF分析iOS app
  15. 文件查找工具locatfind
  16. python 网络拓扑图_python 网络拓扑图
  17. origin画图畸变
  18. Windows 10快速删除大量回收站文件以及由此引起的回收站右键清空反应慢问题的解决
  19. 华为S5720S重置密码
  20. Mininet系列实验(三):Mininet命令延伸实验扩展

热门文章

  1. 队爷的讲学计划 (强连通缩点+最短路)
  2. 构造虚假栈帧 | 花式栈溢出
  3. POJ3322Bloxorz I
  4. web技术_使用浏览器进行全双工通信的 WebSocketHTTP协议的性能瓶颈AjaxCometSPDY技术
  5. 鲁迅先生的《一件小事》
  6. 【第 001 期 · 文献领读】——MRI专题
  7. 微信小程序 table表格 PC版本
  8. Linux dd 命令 限制文件夹大小
  9. 【转载】TinyXML2使用教程
  10. 小程序marker callout 遇到的坑