详细解决方案
计算随意2个日期内的工作日
热度:4163 发布时间:2013-02-25 21:16:12.0
package com.archie2010.test;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 计算任意2个日期内的工作日(没有考虑到国定假日)
*
* @author user
*
*/
public class DateCal {
/**
* @param args
*/
public static void main(String[] args) {
try {
String strDateStart = "2010-12-1";
String strDateEnd = "2010-12-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) {
}
}
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
相关解决方案
- hibernate 的 注解 @OrderBy("deptId asc") 排序原理是如何样的
- Spring 事物update 和 select 的 有关问题,救~
- JBoss 没有有加任何的 Xms Xmx 的 JVM 内存限制,但是,在启动的时候,提示 Out Of Memory
- 下拉列表select 的 条件查询,该如何处理
- Java WEB项目中连接SQL SERVER 2008R2数据库时报错:通过端口 8080 连接到主机 localhost 的 TCP/IP 连接失败。解决方法
- 启动Tomcat。到主机 的 TCP/IP 连接失败。牛群人们帮忙分析指点一哈
- struts2 的 jsp里面小弟我想用 一个多行编辑区域
- 请教各路tomcat 的 localhost不能自动生成 为什么
- 有关js 的 文本框里的关键文字变色有关问题
- Java项目 的 一些 文件 应该 如何 存放
- struts 的 <nested:iterate>标签的有关问题
- 到主机 的 TCP/IP 连接失败解决方案
- Struts 的 Token 有关问题
- linklist 的 NoSuchElementException解决方法
- 计算 。算法解决方案
- 哪位大哥帮看看这个异常是那错了?java.net.BindException: Address already in use: connect到主机 的 TCP/IP 连接失败
- 请推荐一本 入门级 的 AJAX 书籍!解决方案
- GWT導入外部類的問題,该如何解决
- 日 明明没错啊 为什么就.该如何解决
- struts 的 dynamic form bean 是否session作用域的
- 急csdn 的 静态页面回复 功能如何实现的
- 那位高人有年,月,日 联动下拉框的源码?该如何处理
- 怎么改变 文件上传框 的"浏览." 按钮的长度
- 如何把写好的html 代码转成JSP 的,
- 求 java 的 patshop ?解决办法
- 求sun java 的 serial number,多谢
- spring mvc中@RequestMapping(value = "${adminPath}/cms/link")的${adminPath}是什么意思?怎么
- Java 的 Socket 服务器和客户端通讯
- Spring 中ibatis 的 sql地图client 地图pingLocations
- frameset 的 repsonse.sendRedirect()有关问题