public class CalendarTest {
//节假日列表
private static List<Calendar> holidayList = new ArrayList<Calendar>();
//周末为工作日
private static List<Calendar> weekendList = new ArrayList<Calendar>();
/**
* @param args
* return void 返回类型
* throws
*/
public static void main(String[] args) {
try {

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar ca = Calendar.getInstance();
Date d = df.parse("2016-09-15");
ca.setTime(d);//设置当前时间

CalendarTest ct = new CalendarTest();
ct.initHolidayList("2016-09-15");//初始节假日
ct.initHolidayList("2016-09-16");//初始节假日
ct.initHolidayList("2016-09-17");//初始节假日

ct.initWeekendList("2016-09-18");//初始周末为工作日

boolean k = checkHoliday(ca);
System.out.println(k);

} catch ( Exception e) {
// TODO: handle exception
System.out.println(e.getClass());
e.printStackTrace();
}

}

/**
*
* 验证日期是否是节假日
* @param calendar 传入需要验证的日期
* @return
* return boolean 返回类型 返回true是节假日,返回false不是节假日
* throws
*/
public static boolean checkHoliday(Calendar calendar) throws Exception{

//判断日期是否是周六周日
if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY ||
calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){

//判断日期是否是节假日
for (Calendar ca : weekendList) {
if(ca.get(Calendar.MONTH) == calendar.get(Calendar.MONTH) &&
ca.get(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH)&&
ca.get(Calendar.YEAR) == calendar.get(Calendar.YEAR)){
return false;
}
}

return true;
}
//判断日期是否是节假日
for (Calendar ca : holidayList) {
if(ca.get(Calendar.MONTH) == calendar.get(Calendar.MONTH) &&
ca.get(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH)&&
ca.get(Calendar.YEAR) == calendar.get(Calendar.YEAR)){
return true;
}
}

return false;
}

/**
*
* 把所有节假日放入list
* @param date 从数据库查 查出来的格式2016-05-09
* return void 返回类型
* throws
*/
public void initHolidayList(String date){

String [] da = date.split("-");

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.valueOf(da[0]));
calendar.set(Calendar.MONTH, Integer.valueOf(da[1])-1);//月份比正常小1,0代表一月
calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(da[2]));
holidayList.add(calendar);
}

/**
* 初始化周末被调整为工作日的数据
*/
public void initWeekendList(String date){
String [] da = date.split("-");

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.valueOf(da[0]));
calendar.set(Calendar.MONTH, Integer.valueOf(da[1])-1);//月份比正常小1,0代表一月
calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(da[2]));
weekendList.add(calendar);
}

}

java节假日的更多相关文章

  1. Java节假日算法

    类:Vacation package test; import java.io.Serializable; import java.util.Date; public class Vacation i ...

  2. java节假日api--关于节假日想到的

    http://goseek.cn/index.php. 跟一园友讨论节假日问题得之一网址...涨姿势...(仅限中国节假日) http://api.goseek.cn/ 另一网友整理了测试类: htt ...

  3. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  4. JAVA判断当前日期是节假日还是工作日

    package com.buybal.bat.util; import java.io.File; import java.io.FileInputStream; import java.io.IOE ...

  5. java获取n个工作日后的日期, 排除周末和节假日(顺延)

    一.写在前面 需求: 工作需要获取n个工作日后的日期, 需要排除weekend和holiday, holiday存在数据库中, 存入的形式是一个节日有起始日期和截止日期(以下文中有关于节假日的表截图) ...

  6. java 判断日期是否是节假日

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

  7. java 日历计算农历和节假日的工具类

    背景 业务需求需要后端提供这样的接口,网上找了很多java代码例子,虽然功能实现了 但是不完善,特别是节日那一块儿.然后百度发现有这样的插件,但是信息也是java后端提供的非js 然后在开源js插件找 ...

  8. java处理节假日和工作时间的工具类

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; impo ...

  9. 谈谈JAVA实现节假日验证

    我们需要两个类,第一个类: 我们叫它验证类. 第二个类: 它是对法定节假日的抽象. 第一步开始: 当验证类被初始化的时候,会加载本年的所有法定节假日到一个list里: thisYearHolidays ...

随机推荐

  1. VS2017 Debug断点后显示UTF8字符串

    断点后跟踪字幕文件文本,因为国内字幕一般是UTF8的,VS默认显示不出来,在变量上双击,加入 ,s8就可以了 默认 修改后 其他 ,数字  将变量拆分为数组显示, 数字是要显示多少位, 此法对cons ...

  2. js浮点数加减乘除精度不准确

    做个记录,以备不时之需 //加法 Number.prototype.add = function(arg){ var r1,r2,m; try{r1=this.toString().split(&qu ...

  3. JavaScript基础视频教程总结(071-080章)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. .Net QQ互联教程

    qq互联只需要备案即可申请,申请成功后可以到qq互联官网查看教程,本站开始想使用js的教程但是由于本站需要绑定本站的账号用js教程无法完成,所以使用原始的oauth2.0来完成. 申请qq互联接口 q ...

  5. phantomjs的安装和使用链接

    1.先下载phantomjs并解压2.将phantomjs的bin目录配置到环境变量中3.测试phantomjs,cmd下输入phantomjs进入 (按 Ctrl + c 组 合键退出和 phant ...

  6. 16bit CRC算法C语言实现

    #define CRC_16_POLYNOMIALS 0x8005 unsigned short CRC16_3(unsigned char* pchMsg, unsigned short wData ...

  7. 2019-4-29 js学习笔记

    js学习笔记一:js数据类型   1:基本数据类型       number类型(整数,小数)      String类型          boolean类型        NaN类型其实是一个nu ...

  8. JAVA线程池的实际运用

    线程池的创建 我们可以通过ThreadPoolExecutor来创建一个线程池 /** * @param corePoolSize 线程池基本大小,核心线程池大小,活动线程小于corePoolSize ...

  9. 跟繁琐的命令行说拜拜!Gerapy分布式爬虫管理框架来袭!

    背景 用 Python 做过爬虫的小伙伴可能接触过 Scrapy,GitHub:https://github.com/scrapy/scrapy.Scrapy 的确是一个非常强大的爬虫框架,爬取效率高 ...

  10. 第83节:Java中的学生管理系统分页功能

    第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...