java计算工作时间除去节假日以及双休日计算工作时间除去节假日以及双休日
主要为大家详细介绍了java计算工作时间除去节假日以及双休日的方法,具有一定的参考价值,感兴趣的小伙伴
们可以参考一下
本文实例为大家分享了java计算工作时间的具体代码,不包括节假日、双休日,供大家参考,具体内容如下
package common.util;
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.LinkedList;
import java.util.List;
public class CalculateHours {
SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); //这里的格式可以自己设置
//设置上班时间:该处时间可以根据实际情况进行调整
int abh = 9;//上午上班时间,小时
int abm = 00;//上午上班时间,分钟
int aeh = 12;//上午下班时间,小时
int aem = 0;//上午下班时间,分钟
int pbh = 13;//下午上班时间,小时
int pbm = 00;//下午上班时间,分钟
int peh = 18;//下午下班时间,小时
int pem = 0;//下午下班时间,分钟
float h1 = abh+(float)abm/60;
float h2 = aeh+(float)aem/60;
float h3 = pbh+(float)pbm/60;
float h4 = peh+(float)pem/60;
float hoursPerDay = h2-h1+(h4-h3);//每天上班小时数
int daysPerWeek = 5;//每周工作天数
long milsecPerDay = 1000*60*60*24;//每天的毫秒数
float hoursPerWeek = hoursPerDay*daysPerWeek;//每星期小时数
public float calculateHours(String beginTime, String endTime){
//对输入的字符串形式的时间进行转换
Date t1 = stringToDate(beginTime);//真实开始时间
Date t2 = stringToDate(endTime);//真实结束时间
//对时间进行预处理
t1 = processBeginTime(t1);
t2 = processEndTime(t2);
//若开始时间晚于结束时间,返回0
if(t1.getTime()>t2.getTime()){
return 0;
}
//开始时间到结束时间的完整星期数
int weekCount = (int) ((t2.getTime()-t1.getTime())/(milsecPerDay*7));
float totalHours = 0;
totalHours += weekCount * hoursPerWeek;
//调整结束时间,使开始时间和结束时间在一个星期的周期之内
t2.setTime(t2.getTime()-weekCount*7*milsecPerDay);
int dayCounts = 0;//记录开始时间和结束时间之间工作日天数
//调整开始时间,使得开始时间和结束时间在同一天,或者相邻的工作日内。
while(t1.getTime()<=t2.getTime()){
Date temp = new Date(t1.getTime()+milsecPerDay);
temp = processBeginTime(temp);
temp.setHours(t1.getHours());
temp.setMinutes(t1.getMinutes());
if(temp.getTime()>t2.getTime()){
break;
}else{
t1 = temp;
dayCounts++;
}
}
totalHours += dayCounts * hoursPerDay;
float hh1 = t1.getHours() + (float)t1.getMinutes()/60;
float hh2 = t2.getHours() + (float)t2.getMinutes()/60;
//处理开始结束是同一天的情况
if(t1.getDay()==t2.getDay()){
float tt = 0;
tt = hh2 - hh1;
if(hh1>=h1&&hh1<=h2&&hh2>=h3){
tt = tt - (h3-h2);
}
totalHours += tt;
}else{
评论3
最新资源