- 浏览: 595024 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 245java -jar spring-boot-druid-0.0 ... -
List 边遍历,边删除?
2020-07-17 16:51 504新手常犯的错误 可能很 ... -
servlet 文件上传
2012-08-10 10:52 1141org.apache.commons.fileupload 文 ... -
pdf 简单连接servlet
2012-07-25 10:05 1103protected void doGet(HttpSe ... -
应用 HttpClient 来对付各种顽固的WEB服务器
2012-04-11 17:38 984一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
MAVEN2入门学习心得(4)-知识汇集
2012-01-11 14:16 1008一、创建Spring+Hibernate+Activiti+V ... -
MAVEN2入门学习心得(3)-仓库管理器Nexus相关
2012-01-11 14:11 1333以前觉得Nexus搭建太简单,没有留下学习重点,重新温习起来又 ... -
MAVEN2入门学习心得(2)-仓库相关
2012-01-11 14:08 1283MAVEN2的仓库基本可以分为主机仓库、代理仓库、本地仓库。 ... -
MAVEN2入门学习心得(1)-插件相关
2012-01-11 14:02 1155MAVEN2涉及到很多插件,掌握插件的学习方式很重要,要不然接 ... -
restful webserice
2011-08-11 20:06 943package com.onetown.action.admi ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-08-05 10:00 869这个问题是我的工程中 ... -
ibatis 一级缓存 功能
2011-01-28 15:50 2126前几天和朋友讨论数据库Cache的时候,谈到了iBatis框架 ... -
内存溢出的解决
2011-01-28 15:07 1076内存溢出虽然很棘手 ... -
oracle sql 基础
2010-12-25 14:52 888视图; create or replace view my_v ... -
计算 上一个 工作日的 自定义函数
2010-09-06 10:31 1813算法描述 1.获取日期参数,然后自减一 2.判断该日期是否是 ... -
java file
2010-09-05 21:37 1280追加文件尾部 public void testPrintWri ... -
验证码
2010-08-31 09:07 1039package com.pa.util; import ... -
java List与Array 转换
2010-08-31 08:57 35482public static void main(String[ ... -
java property 配置文件 用法
2010-08-14 18:12 4976在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我 ... -
防止 session 被 篡改
2010-06-27 14:27 1756public String login() { ...
相关推荐
Java中计算任意两个日期之间的工作天数.java 工具类
计算任意两年之间的间隔天数的java代码,可以自己输入任意的年月日。
java实现输入任意两个日期输出月份数和天数,综合考虑闰年、2月等因素,对于整月计算利息或按天数计算利息提供基础工具类。也可以吧内部类独立出来,方便跨包调用,可自行调整。很实用的一个实现。其他百度查到的很...
"指定两个日期计算相隔的天数"这一功能通常涉及日期函数的使用,这些函数能够帮助我们快速地得出两个日期间的差距,即天数。这里我们将详细探讨如何实现这一功能,以及相关的编程语言和工具。 1. **通用方法**: ...
在Java中,要计算一个月内有多少个工作日(通常指周一至周五),以及具体哪些日子是工作日,可以通过多种方法实现。这里将介绍一种较为通用的方法:利用`java.util.Calendar`类来计算指定月份内的工作日。 #### 一...
用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.如果有两个日期值,计算它们相距的天数.
[工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页 .java.txt [工具类] MD5 .java.txt [工具类] MD5强化版 .java.txt [工具类] MD5超强化版 .java.txt [工具类] XML 实用工具类 .java...
5. 时间间隔:计算两个日期之间的差值,如相差的天数、小时数等。 6. 日期范围:检查日期是否在指定的日期范围内。 对于`JavaDateUtil.java`的具体实现,由于没有给出详细代码,我们无法深入探讨。但可以肯定的是,...
- **功能**: 提供了计算任意两个日期之间相差天数的方法。 - **实现细节**: - 私有变量 `total` 用于存储计算结果。 - 构造函数接收两个日期字符串参数 `indate` 和 `outdate`,并通过调用 `mission()` 方法进行...
[工具类] 成各种密码随机串,加密解密,编码解码,执行url.java [工具类] 读取、打印输出、保存xml .java ...[工具类] Java中计算任意两个日期之间的工作天数 .java [工具类] java抓取网页 .java [工具类] MD5 .java
"java控制台下万年历"项目旨在实现一个功能,即用户可以输入任意年份和月份,程序将在控制台上显示出该月的日历,并能计算出任意两个日期之间的天数。 首先,我们需要使用Java的内置`java.time`包,这个包自Java 8...
### Java编程技术:计算任意两个日期间的天数差 #### 概述 本文将详细介绍如何在Java编程语言中实现计算两个日期之间的天数差异的方法。该功能对于开发涉及日期处理的应用程序非常有用,例如日历应用程序、数据...
例如,`Duration`类可以用来计算两个`LocalDateTime`之间的持续时间,`Period`类则用于计算两个`LocalDate`之间的日期间隔。 在实际应用中,理解并熟练使用这些时间处理概念和方法,可以帮助我们准确地管理应用程序...
1、对于任意三个整数,判断其是否为一个合法的日期值。 2、给定一个日期值,计算若干天后的日期值。 3、如果有两个日期值,计算它们相距的天数。
6. 计算两个任意时间中间的间隔天数: 可以通过`Calendar`对象的`getTimeInMillis()`方法获取日期的毫秒值,然后计算两个日期毫秒值的差,再转换为天数。以下是一个示例方法,计算两个`Calendar`对象之间的天数间隔...
这款软件设计简洁,操作简便,能够帮助用户快速了解任意两个日期之间的天数差。在日常工作中,这种工具尤其适用于需要对时间间隔进行精确计算的场景,比如项目管理、财务计算、活动规划等。 首先,我们来深入理解...