博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排班 java_个人笔记 java 根据排班计划得出工作时间(排除节假日,周末,休息方式)...
阅读量:6376 次
发布时间:2019-06-23

本文共 1942 字,大约阅读时间需要 6 分钟。

map = new HashMap();

long reapertdays = 0;//重叠天数

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

// 标准时间

Date bt = sdf.parse(startPlans);

Date ot = sdf.parse(endPlans);

// 目标时间

Date st = sdf.parse(startHoliday);

Date ed = sdf.parse(endHoliday);

long btlong = Math.min(bt.getTime(), ot.getTime());// 开始时间

long otlong = Math.max(bt.getTime(), ot.getTime());// 结束时间

long stlong = Math.min(st.getTime(), ed.getTime());// 开始时间

long edlong = Math.max(st.getTime(), ed.getTime());// 结束时间

if ((stlong >= btlong && stlong <= otlong) || (edlong >= btlong && edlong <= otlong)) {

// 一定有重叠部分

long sblong = stlong >= btlong ? stlong : btlong;

long eblong = otlong >= edlong ? edlong : otlong;

String sblongs = sdf.format(sblong);

String eblongs = sdf.format(eblong);

Date d1=sdf.parse(sblongs);

Date d2=sdf.parse(eblongs);

String ds1 = sdf.format(d1);

String ds2 = sdf.format(d2);

reapertdays=((d2.getTime()-d1.getTime())/(3600*24*1000))+1;//重叠天数

map.put("reapertdays", reapertdays);

map.put("Ds1", ds1);

map.put("Ds2", ds2);

return map;

}

map.put("reapertdays", reapertdays);

return map;

}

/**

* 节假日与周末重叠 天数

* @param startHoliday 假期开始时间

* @param holiday 假期天数

* @param restType 休息方式 1:双休 2:周日单休

* @return

* @throws Exception

*/

private long isReapert(String startHoliday,long holiday,long restType) throws Exception{

long reatpertDay =0;

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

int dayForWeek = 0;

if(holiday==1){//假期只有一天,且为双休形式,得出一天假期为星期几

Calendar c = Calendar.getInstance();

c.setTime(format.parse(startHoliday));

if(c.get(Calendar.DAY_OF_WEEK) == 1){

dayForWeek = 7;

}else{

dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;

}

if(restType==1){

if(dayForWeek==6||dayForWeek==7){

reatpertDay = 1;

}

}

if(restType==2){

if(dayForWeek==7){

reatpertDay = 1;

}

}

}else{

Calendar calendar = new GregorianCalendar();

for(int i=0;iEW)//给定的星期几大于结束日期的星期几,需要减少一天

sunDay--;

}catch(Exception se){

se.printStackTrace();

}

return sunDay;

}

}

转载地址:http://elvqa.baihongyu.com/

你可能感兴趣的文章
Spring Security整合KeyCloak保护Rest API
查看>>
POS概述
查看>>
containerd发布了CRI修复程序和CVE-2019-5736更新的runc
查看>>
77. Combinations
查看>>
WEB前端开发的思考与感悟
查看>>
实现了所有主流APP的分类切换效果,可快速接入,灵活扩展(swift)
查看>>
微信自动跳转浏览器打开APP(APK)下载链接
查看>>
==与===的区别
查看>>
机器学习实验笔记
查看>>
不同工具查看代码分支diff的差异
查看>>
一文 | 跨域及其解决方案
查看>>
白话Java I/O模型
查看>>
[TsAdmin]--一款基于Vue.js+Element UI的单页无刷新(无iframe)多选项卡的后台管理系统模板...
查看>>
排列组合技术
查看>>
哈工大发明“电子体毛”,让机器人学会“敏感”
查看>>
上传一张照片,让算法告诉你是否患有抑郁症
查看>>
VR厂商唯晶科技获2800万C+轮融资,曾开发过游戏《圣女之歌》
查看>>
Countly 19.02.1 发布,实时移动和 web 分析报告平台
查看>>
TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔
查看>>
Oracle数据库机出新帮助不同规模企业迈向云端
查看>>