- 浏览: 582241 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (268)
- ext基础 (72)
- Java基础 (68)
- jquery (14)
- oracle (21)
- sqlserver (7)
- linux (2)
- webserver (1)
- C/C++ (1)
- sql (9)
- IDE (2)
- java 智能卡 (1)
- mysql (6)
- ibatis (2)
- struts2 (3)
- cvs (1)
- 服务器 (1)
- html (11)
- freemarker (4)
- liferay (2)
- jMS (1)
- iphone (1)
- c# (1)
- Android (11)
- wince (6)
- javascript (4)
- ps (1)
- hibernate (1)
- 其他 (3)
最新评论
-
ilyq:
请问,px.gif 在哪里
斜线表头 -
jisang:
没看懂,第一个org.js和最后的js什么关系,可否发我一份完 ...
用ExtJS 实现动态载入树(Load tree) -
JavaStudyEye:
我去,能否搞个正确点的,,,
<#list ...
freemarker 遍历map 对象 -
PangSir:
大爱,简直是大爱!!困扰这么久以来的问题,虽然知道是CSS的问 ...
ExtJs checkbox radiobox 问题 汇总 -
skynet_java:
有demo嘛!邮箱:think_world@foxmail.c ...
消息推送服务需求 - 服务器开发、客户端开发
主要思路: 对于任意2个日期比如:date_start=2010-8-1、date_end=2010-9-5 ,首先计算这连个日期之间的时间间隔(天数),然后分别对date_start 和date_end 取得它们下一个星期一的日期,这样就可以得到一个新的可以整除7的完整日期间隔(这个新的日期间隔已经把星期几的问题剔出掉了),换一种说法就是我们可以得到,这两个新的日期之间的周数,拿这个周数乘以5就是工作日期了(tmpWorkingDays)。但是这个日期并不是我们所要的日期,接下来我们要做的就是计算date_start,date_end这两个日期对于根据它们所产生的新的日期之间的时间偏移量,date_start的偏移量(date_start_change)是需要加的,而date_end的这个偏移量(date_end_change)是需要减去的。 最后我们只要用tmpWorkingDays+date_start_change-date_end_change就是我们所要求的实际工作日了。以下是所有实现代码(两个日期跨年也没有问题)。
package com.date.utlit; import Java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 计算任意2个日期内的工作日(没有考虑到国定假日) * @author user * */ public class DateCal { /** * @param args */ public static void main(String[] args) { try { String strDateStart = "2006-10-1"; String strDateEnd = "2006-10-14"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date_start = sdf.parse(strDateStart); Date date_end = sdf.parse(strDateEnd); DateCal app = new DateCal(); Calendar cal_start = Calendar.getInstance(); Calendar cal_end = Calendar.getInstance(); cal_start.setTime(date_start); cal_end.setTime(date_end); System.out.println("星期-->" + app.getChineseWeek(cal_start) + " 日期-->" + cal_start.get(Calendar.YEAR) + "-" + (cal_start.get(Calendar.MONTH) + 1) + "-" + cal_start.get(Calendar.DAY_OF_MONTH)); System.out.println("星期-->" + app.getChineseWeek(cal_end) + " 日期-->" + cal_end.get(Calendar.YEAR) + "-" + (cal_end.get(Calendar.MONTH) + 1) + "-" + cal_end.get(Calendar.DAY_OF_MONTH)); System.out.println("工作日为-->" + app.getWorkingDay(cal_start, cal_end)); System.out.println("休息日-->"+app.getHolidays(cal_start, cal_end)); } catch (Exception e) { // TODO: handle exception } } public int getDaysBetween(java.util.Calendar d1, java.util.Calendar d2) { if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end java.util.Calendar swap = d1; d1 = d2; d2 = swap; } int days = d2.get(java.util.Calendar.DAY_OF_YEAR) - d1.get(java.util.Calendar.DAY_OF_YEAR); int y2 = d2.get(java.util.Calendar.YEAR); if (d1.get(java.util.Calendar.YEAR) != y2) { d1 = (java.util.Calendar) d1.clone(); do { days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR); d1.add(java.util.Calendar.YEAR, 1); } while (d1.get(java.util.Calendar.YEAR) != y2); } return days; } /** * 计算2个日期之间的相隔天数 * @param d1 * @param d2 * @return */ public int getWorkingDay(java.util.Calendar d1, java.util.Calendar d2) { int result = -1; if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end java.util.Calendar swap = d1; d1 = d2; d2 = swap; } int betweendays = getDaysBetween(d1, d2); int charge_date = 0; int charge_start_date = 0;//开始日期的日期偏移量 int charge_end_date = 0;//结束日期的日期偏移量 // 日期不在同一个日期内 int stmp; int etmp; stmp = 7 - d1.get(Calendar.DAY_OF_WEEK); etmp = 7 - d2.get(Calendar.DAY_OF_WEEK); if (stmp != 0 && stmp != 6) {// 开始日期为星期六和星期日时偏移量为0 charge_start_date = stmp - 1; } if (etmp != 0 && etmp != 6) {// 结束日期为星期六和星期日时偏移量为0 charge_end_date = etmp - 1; } // } result = (getDaysBetween(this.getNextMonday(d1), this.getNextMonday(d2)) / 7) * 5 + charge_start_date - charge_end_date; //System.out.println("charge_start_date>" + charge_start_date); //System.out.println("charge_end_date>" + charge_end_date); //System.out.println("between day is-->" + betweendays); return result; } public String getChineseWeek(Calendar date) { final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); // System.out.println(dayNames[dayOfWeek - 1]); return dayNames[dayOfWeek - 1]; } /** * 获得日期的下一个星期一的日期 * * @param date * @return */ public Calendar getNextMonday(Calendar date) { Calendar result = null; result = date; do { result = (Calendar) result.clone(); result.add(Calendar.DATE, 1); } while (result.get(Calendar.DAY_OF_WEEK) != 2); return result; } /** * * @param d1 * @param d2 * @return */ public int getHolidays(Calendar d1,Calendar d2){ return this.getDaysBetween(d1, d2)-this.getWorkingDay(d1, d2); } }
发表评论
-
springboot 发布
2022-01-08 16:53 136java -jar spring-boot-druid-0.0 ... -
List 边遍历,边删除?
2020-07-17 16:51 398新手常犯的错误 可能很 ... -
servlet 文件上传
2012-08-10 10:52 1094org.apache.commons.fileupload 文 ... -
pdf 简单连接servlet
2012-07-25 10:05 1065protected void doGet(HttpSe ... -
应用 HttpClient 来对付各种顽固的WEB服务器
2012-04-11 17:38 941一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
MAVEN2入门学习心得(4)-知识汇集
2012-01-11 14:16 967一、创建Spring+Hibernate+Activiti+V ... -
MAVEN2入门学习心得(3)-仓库管理器Nexus相关
2012-01-11 14:11 1290以前觉得Nexus搭建太简单,没有留下学习重点,重新温习起来又 ... -
MAVEN2入门学习心得(2)-仓库相关
2012-01-11 14:08 1246MAVEN2的仓库基本可以分为主机仓库、代理仓库、本地仓库。 ... -
MAVEN2入门学习心得(1)-插件相关
2012-01-11 14:02 1114MAVEN2涉及到很多插件,掌握插件的学习方式很重要,要不然接 ... -
restful webserice
2011-08-11 20:06 902package com.onetown.action.admi ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-08-05 10:00 838这个问题是我的工程中 ... -
ibatis 一级缓存 功能
2011-01-28 15:50 2060前几天和朋友讨论数据库Cache的时候,谈到了iBatis框架 ... -
内存溢出的解决
2011-01-28 15:07 1033内存溢出虽然很棘手 ... -
oracle sql 基础
2010-12-25 14:52 839视图; create or replace view my_v ... -
计算 上一个 工作日的 自定义函数
2010-09-06 10:31 1754算法描述 1.获取日期参数,然后自减一 2.判断该日期是否是 ... -
java file
2010-09-05 21:37 1242追加文件尾部 public void testPrintWri ... -
验证码
2010-08-31 09:07 1001package com.pa.util; import ... -
java List与Array 转换
2010-08-31 08:57 35420public static void main(String[ ... -
java property 配置文件 用法
2010-08-14 18:12 4942在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我 ... -
防止 session 被 篡改
2010-06-27 14:27 1698public String login() { ...
相关推荐
Java中计算任意两个日期之间的工作天数.java 工具类
计算任意两年之间的间隔天数的java代码,可以自己输入任意的年月日。
java实现输入任意两个日期输出月份数和天数,综合考虑闰年、2月等因素,对于整月计算利息或按天数计算利息提供基础工具类。也可以吧内部类独立出来,方便跨包调用,可自行调整。很实用的一个实现。其他百度查到的很...
用JAVA编写的计算天数的程序,例如从你出生到今天已经多少天了。可以任意的输入两个日期,计算其中间的天数
编码练习计算任意两个日期之间的天数差异jesimone57,2017年6月6日描述创建一个可以按以下格式成对读取日期的应用程序:DD MM YYYY, DD MM YYYY验证输入数据,并计算两个日期之间的天数之差。 应用程序的输出应采用...
2.[工具类] Java中计算任意两个日期之间的工作天数 .java 3.[工具类] MD5 .java 4.[工具类] 时间工具TimeUtil.java 5.[工具类] 通信服务端simpleServer 6.[工具类] 使用Java程序来实现HTTP文件的队列下载 .java 7....
[工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页 .java.txt [工具类] MD5 .java.txt [工具类] MD5强化版 .java.txt [工具类] MD5超强化版 .java.txt [工具类] XML 实用工具类 .java...
1、对于任意三个整数,判断其是否为一个合法的日期值。 2、给定一个日期值,计算若干天后的日期值。 3、如果有两个日期值,计算它们相距的天数。
1.对于任意三个整数,判断其否为一个合法的日期值. 2.给定一个日期值,计算若干天后的日期值. 3.如果有两个日期值,计算它们相距的天数.
[工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页 .java.txt [工具类] MD5 .java.txt [工具类] MD5强化版 .java.txt [工具类] MD5超强化版 .java.txt [工具类] XML 实用工具类 .java...
[工具类] 成各种密码随机串,加密解密,编码解码,执行url.java [工具类] 读取、打印输出、保存xml .java ...[工具类] Java中计算任意两个日期之间的工作天数 .java [工具类] java抓取网页 .java [工具类] MD5 .java
随机输入日期计算星期几,打印任意一年的日历 已知,1900年1月1日是星期1,用户随机输入年月日,计算星期几 实现思路: 一、知道1900年1月1日为星期一,求输入的年份月份与1900年1月1日相隔的总天数。闰年366天,...
如何获取某个日期是当月的最后一天 如何格式化日期 5.数组和集合 6.文件和目录(I/O)操作 如何列出某个目录下的所有文件 如何列出某个目录下的所有子目录 判断一个文件或目录是否存在 如何读写文件 7.Java...
实例26 存上100元需要多少天 40 实例27 输出100之间的所有偶数 41 实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 ...
实例26 存上100元需要多少天 40 实例27 输出100之间的所有偶数 41 实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母...
实例26 存上100元需要多少天 40 实例27 输出100之间的所有偶数 41 实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 switch...
实例26 存上100元需要多少天 40 实例27 输出100之间的所有偶数 41 实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 switch语句 45 实例31 ...
实例26 存上100元需要多少天 40 实例27 输出100之间的所有偶数 41 实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母...
(3) 使用 Dijkstra 算法找到图中任意两个顶点之间的最短路径。 (4) 打印图形。 (5) 找出图中所有节点的可达顶点集。 程序设计 附带的 java 项目包含以下文件。 1. Graph.java 2. WeightedGraph.java 3. Vertex....
三、 编写程序,从键盘输入一个0~99999之间的任意数,判断输入的数是几位数? 四、 编写程序,给定一个学生成绩,给出相应等级: 90~100优秀80~89良好70~79中等60~69及格0~59不及格 ...... 七、 猴子吃桃问题。猴子...