效果图:
html代码:
<div style="height: 39px;text-align:center;"><span style="float: left;line-height: 36px;margin-left: 5px;">耗时
<span id="days" style="color: #cc0000">0</span>个工作日</span> </div>
js(使用了layui): var laydate = layui.laydate; laydate.render({ elem: '#timerange', range: true , done: function (value, date) { appendDays(value); } }); function appendDays(val) { var range = val.split(" - "); var begin = ""; var end = ""; if (range.length == 2) { begin = range[0].trim(); end = range[1].trim(); } var startTime = new Date(begin.replace("-", "/")); var endTime = new Date(end.replace("-", "/")); if (startTime > endTime) { $("#days").text(""); return false; }else { var days = DateUtils.countWorkDay(startTime, endTime); $("#days").text(days); return false; } }
//比较开始日期与结束日期 function countWorkDay(sDay,eDay){ var s = sDay; var e = eDay; var s_t_w = s.getDay(), e_t_w = e.getDay(); //相差天数 var diffDay = (e - s) / (1000 * 60 * 60 * 24) + 1; //如果开始日期为周六或者周日 需要调整相差天数 var diffWeekDay = diffDay - (s_t_w ==0?1:0)- (s_t_w ==6?2:0); //计算有几个完整的周 var weeks = Math.floor(diffWeekDay / 7); //向下整除 4/3=1; var i = weeks*5 + (e_t_w==6?5:e_t_w) + ( s_t_w >= 1 && s_t_w <= 5 ? (6-s_t_w):0); var x = diffDay - weeks*2; if(i<=x){ return i; }else { if(e_t_w==6){ x=x-1; } return x; } }