mysql 统计请假天数_Javascript 计算请假天数

计算请假天数,笼统来说就是计算两个日期的差值。对于JS来说,两个时间直接相减,得到的是这两个时间差的毫秒数。

先上代码后贴图。

1.测试数据

后文中用到的测试数据如下:

var dateStart = '2018-12-01 04:15',

dateEnd= '2018-12-08 12:15';

var MS_HOUR = 1000*60*60;

2.时间差毫秒数

普通计算两个时间差的方法如下:

functiongetDiff(start, end)

{var s =Date.parse(start),

e=Date.parse(end);//取绝对值

return Math.abs(e -s);

}console.log(getDiff(dateStart, dateEnd));

输出:633600000

3.时间差小时数

计算两个时间差的小时数:

functiongetDiffByHour(start, end)

{/****

* start:请假开始时间

* end:请假结束时间

* 计算小时数(1位小数)

* ***/

var s =Date.parse(start),

e=Date.parse(end);//取绝对值

var diff = Math.abs(e -s);return (diff / (1000 * 60 * 60)).toFixed(1);

}

console.log(getDiffByHour(dateStart, dateEnd));

输出:176.0

4.简单请假规则

不同单位对请假的限制条件不同,现规定请假天数计算规则如下:

1、请假半天记0.5天;

2、小于半天部分,1小时计0.1天,2小时计0.2天,以此类推

那么计算逻辑也还比较简单:

functiongetDiffByDay(start, end)

{/****

* start:请假开始时间

* end:请假结束时间

* 计算天数,半天按0.5天计算,小于半天,1小时计0.1天,2小时计0.2天,3小时计0.3天,4小时计0.4天(1位小数)

* ***/

var s =Date.parse(start),

e=Date.parse(end);//取绝对值

var diff = Math.abs(e -s);var result = 0,

hour= Math.floor(diff / (1000 * 60 * 60)),

day= Math.floor(diff / (1000 * 60 * 60 * 24));

result=day;if (day > 0)

{//去掉天数部分,仅留小时数

hour -= day * 24;

}if (hour > 5)

{//如果大于半天(5小时)

result += 0.5;

hour= Math.floor((diff - (day * 24 + 5) * 1000 * 60 * 60) / (1000 * 60 * 60));

}if (hour > 1)

{

result+= hour * 0.1;

}returnresult;

}

console.log(getDiffByDay(dateStart, dateEnd));

输出:7.8

5.复杂请假规则

倘若规定上下班时间,中午休息时间,工作时长等等,那计算的逻辑就相当复杂了。

现规定上下班及午休时间如下:

上班时间:8:00

下班时间:18:00

午休时间:12:00-14:00

(正常日工作时长:8小时)

那么,请假1小时则为1/8天,4小时即为0.5天。

简单分析:

1.请假时段在同一天内,直接计算

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值