package com.jc.servlet; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class Test { //计算工作日实际日期 @org.junit.Test public void test() { try { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar ca = Calendar.getInstance(); Date d = df.parse("2016-12-8"); ca.setTime(d);//设置当前时间 initHolidayList("2014-11-06");//初始节假日 initHolidayList("2014-11-07");//初始节假日 initHolidayList("2014-11-03");//初始节假日 Calendar c = addDateByWorkDay(ca,3); System.out.println(df.format(c.getTime())); } catch ( Exception e) { // TODO: handle exception System.out.println(e.getClass()); e.printStackTrace(); } } @org.junit.Test public void test2 () throws Exception{ String sdate = "2016-12-08"; String edate = "2016-12-13"; long day = getDaySub(sdate,edate); System.out.println(day); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar ca = Calendar.getInstance(); Date d = df.parse(sdate); ca.setTime(d);//设置当前时间 long gzr = endDay_startDay(ca,day); System.out.println(gzr); } /** * 两个日期相减 * @param beginDateStr * @param endDateStr * @return */ public static long getDaySub(String beginDateStr,String endDateStr){ long day=0; SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); Date beginDate; Date endDate; try{ beginDate = format.parse(beginDateStr); endDate= format.parse(endDateStr); day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); //System.out.println("相隔的天数="+day); } catch (ParseException e){ // TODO 自动生成 catch 块 e.printStackTrace(); } return day+1; } /** * 自定义节假日 */ private static List<Calendar> holidayList = new ArrayList<Calendar>(); //节假日列表 /** * 计算一个日期后的多少天有几个休息日,并用使用天数减去工作日获得实际工作日。 * @param calendar * @param day * @return * @throws Exception */ public static long endDay_startDay(Calendar calendar,long day) throws Exception{ long result = 0; for (int i=0; i<day; i++){ calendar.add(Calendar.DAY_OF_MONTH, 1); if(checkHoliday(calendar)){ result++; } } return day-result-1; } /** * * <p>Title: addDateByWorkDay </P> * <p>Description: TODO 计算相加day天,并且排除节假日和周末后的日期</P> * @param calendar 当前的日期 * @param day 相加天数 * @return * return Calendar 返回类型 返回相加day天,并且排除节假日和周末后的日期 * throws * date 2014-11-24 上午10:32:55 */ public static Calendar addDateByWorkDay(Calendar calendar,int day){ try { for (int i = 0; i < day; i++) { calendar.add(Calendar.DAY_OF_MONTH, 1); if(checkHoliday(calendar)){ i--; } } return calendar; } catch (Exception e) { e.printStackTrace(); } return calendar; } /** * * @param calendar * @param day * @return */ public Calendar addDateDay(Calendar calendar,int day){ try { for (int i = 0; i < day; i++) { calendar.add(Calendar.DAY_OF_MONTH, 1); if(checkHoliday(calendar)){ i++; } } return calendar; } catch (Exception e) { e.printStackTrace(); } return calendar; } /** * * <p>Title: checkHoliday </P> * <p>Description: TODO 验证日期是否是节假日</P> * @param calendar 传入需要验证的日期 * @return * return boolean 返回类型 返回true是节假日,返回false不是节假日 * throws * date 2014-11-24 上午10:13:07 */ 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){ 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; } /** * * <p>Title: initHolidayList </P> * <p>Description: TODO 把所有节假日放入list</P> * @param date 从数据库查 查出来的格式2014-05-09 * return void 返回类型 * throws * date 2014-11-24 上午10:11:35 */ public static 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); } /** * 判断星期六与星期日 * @param bDate * @param aDate * @return * @throws ParseException */ public boolean isSunAndSatur(String bDate) throws ParseException{ DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); //String bDate = "2016-12-19"; //String aDate = "2016-12-30"; Date bdate = format1.parse(bDate); Calendar cal = Calendar.getInstance(); cal.setTime(bdate); if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){ System.out.print("ok"); return true; }else { System.out.print("no"); return false; } } }
相关推荐
随着中国信息技术的不断进步,Java编程技术的应用范围日益扩大,在计算机软件开发领域扮演着越来越重要的角色,并逐步成为一门不可或缺的编程语言。Java语言以其即时性、独立性、安全性的优势,在众多编程语言中...
节假日信息来自中国政府网,一手信息、权威准确 包含最近3年的节假日信息,机器人自动维护,更新及时 日历标题包含放假、补班的天数信息 日历标题包含放假、补班等关键字,方便脚本开发。例如使用iPhone的快捷指令...
在当今信息化快速发展的时代,计算机科学与技术专业的毕业生在完成学业之际...这25个Java项目涵盖了社会的多个方面,可以满足不同学生的兴趣和职业规划,助力他们顺利地走向工作岗位,成为社会需要的高素质技术型人才。
随着信息技术的发展,电子政务成为了提高政府工作效率和服务质量的重要手段。然而,互联网的开放性也给电子政务带来了诸多安全挑战,如信息泄露、数据篡改等问题。为了确保电子政务系统的安全性,必须采取有效措施...
本文档是关于Java远程方法调用...整体而言,这份教程为Java RMI的初学者提供了一个系统的学习路径,并且详细解释了Java RMI工作原理和组件构成。尽管教程的内容较旧,对于学习Java RMI的基本知识和概念仍有很大的帮助。
计算机从之前的一个只有政府或是科研事业才能触及到的信息化产品变为人们工作与生活中不可或缺的必需品并且伴随着国家经济水平与基础设施的不断提升,人们在满足日常温饱基本需求后,日益对更加健康的身体有了更高的...
9. **全球化视野**:随着全球化的推进,跨国合作和远程工作的趋势日益明显,报告可能探讨了全球化背景下的计算机人才流动与合作模式。 10. **挑战与机遇**:报告可能会分析计算机人才面临的挑战,如快速更新的技术...
计算机信息技术是现代社会中不可或缺的基础,它涵盖了从计算机的起源、分类到其工作原理以及广泛应用的诸多方面。在本篇文档中,我们将深入探讨这些关键知识点。 首先,让我们回顾计算机的历史。1946年,世界上第一...
随着计算机的普及,企业和机构对信息化管理的需求日益增加,这样的系统可以有效地减轻杂志社的管理工作量,提高效率。 该系统主要包含两个核心功能模块:杂志订阅管理和公司信息管理。杂志订阅管理模块关注于维护...
1. **教育背景与工作经验**:计算机相关专业,至少3年Java工作经验,有政府信息化或智慧城市项目经验优先。 2. **数据库技能**:熟练使用SQL,掌握MySQL、Oracle等主流数据库。 3. **J2EE框架**:精通Spring、...
计算机从之前的一个只有政府或是科研事业才能触及到的信息化产品变为人们工作与生活中不可或缺的必需品并且伴随着国家经济水平与基础设施的不断提升,人们在满足日常温饱基本需求后,日益对更加健康的身体有了更高的...
网络方向则涉及IT企业、政府、企事业单位等多个行业,从事网络建设和管理工作。随着信息技术的普及,教育、非公有制经济实体等也开始大量吸纳计算机专业人才。 就业趋势显示,企业已经成为吸纳计算机人才的主要力量...
随着技术的发展,公文流转系统的构建已日益成熟。设计一个公文流转系统时,需要考虑的核心技术包括Java技术、MySQL数据库和Tomcat服务器。Java技术以其跨平台、面向对象的特性成为系统的开发基础;MySQL数据库以其...
在今后的工作中,我们需要持续学习新的技术,如响应式设计、前端框架(如React、Vue.js)以及后端开发(如Java、Python),以便更好地适应快速变化的IT行业。同时,团队协作、沟通技巧和项目管理能力也是我们在实习...
与传统分布式计算相比,网格计算更加强调大规模资源共享、协同工作及高性能计算能力。 ##### 2.2 发展阶段 网格计算经历了从概念提出到广泛应用的发展过程: - **初始阶段**:主要集中在理论研究和技术验证上。 - *...
例如,Java、C++、.NET等编程语言的需求量大,而网络安全和数据分析也逐渐成为热门岗位。同时,由于外包服务的兴起,掌握英语和其他外语的计算机专业人才也更受市场欢迎。 就业方向多样化 计算机专业毕业生的就业...
RSA加密算法是一种非对称加密算法,其安全性依赖于大数分解的计算难度,非对称加密意味着使用一对密钥,即公钥和私钥。公钥用于加密数据,而私钥则用于解密数据。由于密钥的长度可以达到几百位甚至更多,这使得利用...
在信息技术日益发达的今天,电子文档格式的多样化使得文件转换成为了日常工作中不可或缺的一部分。OFD(Open Fixed Document Format)是中国国家标准的一种电子文档格式,主要用于存储政府公文、法律文件等,具有...
随着社会的不断发展与进步,人们对信息科学化的认识日益深刻,信息存储的准确性、速度以及完整性已经成为管理工作的关键点。这在高校毕业生就业信息管理方面表现得尤为明显。当前,虽然我国政府、学校和企业已经能够...
对于标签“事业编”,这可能是指在事业单位或政府机构中进行的编程工作,这些环境通常对程序的稳定性和效率有较高要求。因此,在编写这类项目时,选择高效的时间戳获取方法是必要的,同时也要考虑代码的可读性和维护...