Oracle工作上下班时间,js计算工时,去周末,设置上下班时间

这篇博客介绍了一段JavaScript代码,用于计算从9点到18点,扣除1小时午休和周末的工作小时数。作者因为在网上找不到合适的工具,所以自己编写了这个函数。该函数考虑了跨周末的情况,并能精确计算工作日内的实际工作小时。
摘要由CSDN通过智能技术生成

要设置9~18点上下班,中午一小时午休,刨掉周六日,网上找了找没找到合适的方法,自己写了一个

function countSc(str1,str2){

if(!str1 || !str2){return 0;}

//开始构造两个日期对象

var datetime1 = new Date(), datetime2 = new Date();

datetime1.setFullYear(str1.substr(0,4),str1.substr(5,2)-1,str1.substr(8,2));

datetime2.setFullYear(str2.substr(0,4),str2.substr(5,2)-1,str2.substr(8,2));

datetime1.setMilliseconds(0);

datetime2.setMilliseconds(0);

datetime1.setHours(str1.substr(11,2),0,0);

datetime2.setHours(str2.substr(11,2),0,0);

if(datetime1.getDay() == 0 || datetime1.getDay() == 6){

datetime1.setDate(datetime1.getDate() - 1);

datetime1.setHours(23,0,0);

}

if(datetime1.getDay() == 0 || datetime1.getDay() == 6){

datetime1.setDate(datetime1.getDate() - 1);

datetime1.setHours(23,0,0);

}

if(datetime2.getDay() == 0 || datetime2.getDay() == 6){

datetime2.setDate(datetime2.getDate() + 1);

datetime2.setHours(0,0,0);

}

if(datetime2.getDay() == 0 || datetime2.getDay() == 6){

datetime2.setDate(datetime2.getDate() + 1);

datetime2.setHours(0,0,0);

}

var travelHours = 0;

var datetime3 = datetime1;

for(var i = 0;i < 60; i++){

var sd = datetime1.getDate(),ed = datetime2.getDate();

if(sd == ed - 1){

break;

}

datetime1.setDate(datetime1.getDate() + 1);

if(datetime1.getDay() > 0 && datetime1.getDay() < 6){

travelHours += 8;

}

}

if (parseInt(datetime3.getHours()) <= 9) {

travelHours += 8;

}else {

if (parseInt(datetime3.getHours())<= 12) {

travelHours += 12 - parseInt(datetime3.getHours()) + 5;

}else {

if (parseInt(datetime3.getHours()) <= 18) {

travelHours += 18 - parseInt(datetime3.getHours());

}

}

}

if (parseInt(datetime2.getHours()) >= 18) {

travelHours += 8;

}else {

if (parseInt(datetime2.getHours()) >= 13){

travelHours += 3 + parseInt(datetime2.getHours()) - 13;

}else {

if (parseInt(datetime2.getHours()) >= 9) {

travelHours += parseInt(datetime2.getHours()) - 9;

}

}

}

return travelHours;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值