JS 时间段判断工作日天数

效果图:

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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值