js 计算请假时长(去除了周六日,节假日未清除)

js 计算请假时长(去除了周六日,节假日未清除)

2017-12-26 亦皓

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta http-equiv="content-type" content="text/html;charset=utf-8">

<link href="./bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">

<link href="./css/bootstrap-datetimepicker.min.css" rel="stylesheet" media="screen">

</head>

<body>

<input type="text" id="days" value=" "   />

<label  class="control-label">天</label>

<br><br><br><br><br>

<div class="form-group">

<label for="group_name" class="col-sm-2 control-label">开始时间</label>

<div class="input-group date form_datetime col-sm-6"

data-date-format="yyyy-mm-dd   hh:ii:ss "

data-link-field="dtp_input1"

style=" padding:0px 15px;">

<input class="form-control" size="16" type="text" id="time_start">

<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>

</div>

<br><br><br><br>

<div class="form-group">

<label for="group_name" class="col-sm-2 control-label">结束时间</label>

<div class="input-group date form_datetime col-sm-6"

data-date-format="yyyy-mm-dd   hh:ii:ss "

data-link-field="dtp_input2"

style=" padding:0px 15px;">

<input class="form-control" size="16" type="text" id="time_end"     >

<span   class="input-group-addon">

<span    class="glyphicon glyphicon-calendar"></span></span>

</div>

<input type="hidden" id="dtp_input2"  /><br/>

</div>

<br><br><br>

<button   id="submit1">保存</button>

<script type="text/javascript" src="jquery/jquery-1.8.3.min.js" charset="UTF-8"></script>

<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>

<script type="text/javascript" src="js/bootstrap-datetimepicker.js" charset="UTF-8"></script>

<script type="text/javascript" src="js/locales/bootstrap-datetimepicker.fr.js" charset="UTF-8"></script>

<script type="text/javascript" src="h.js" charset="UTF-8"></script>

<script  type="text/javascript" charset="utf-8" >

$(document).ready(function(){

$(‘.form_datetime‘).datetimepicker({

language:  ‘zh-CN‘,

weekStart: 1,

todayBtn:  1,

autoclose: 1,

todayHighlight: 1,

startView: 2,

forceParse: 0,

showMeridian: 1

});

})

$(‘#submit1‘).click(function(){

leaveTime("#time_start","#time_end",caleEndFun);

})

function caleEndFun(leaveTimeObje){

$(‘#days‘).val(leaveTimeObje)

}

function leaveTime(timeStart,timeEnd,enFund){

var starttime = $(timeStart).val();

var endtime = $(timeEnd).val();

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

var date1 = datetime1.setHours(0,0,0);    //开始日期,毫秒表示

var date2 = datetime2.setHours(0,0,0);    //结束日期,毫秒表示

var starttimeleft=starttime.substring(0,10);//获取时间到月份

var endtimeleft=endtime.substring(0,10);

var beginDate = new Date(starttimeleft.replace(/-/g, "/"));

var endDate = new Date(endtimeleft.replace(/-/g, "/"));

var dayNum = parseInt(Math.abs(beginDate  -  endDate)  /  1000  /  60  /  60  /24);

var startWeek = beginDate.getDay();

var starHour=Number(starttime.substring(11,13));

var endHour=Number(endtime.substring(11,13));

var travelHours = 0;    //保存请假小时数

var travelTimeHours = 0;

var iNow = 0;

var dayinweek= new Date(starttime).getDay();/////开始日期是星期几

var dayendweek = new Date(endtime).getDay();//结束日期是星期几

//////根据上班时间 9:00--18:00 把小时

变换到工作时区内

if(date1 ==date2 ){//开始结束时间均在一天

if(starHour<=12 ){

if(9<= endHour  && endHour<13){

travelHours =4;

}else{

travelHours =8;

}

}else if(starHour>=13 ){

travelHours =4;

}

}else{

//如果开始时间小于8点,则计算工时的时候从8点开始计算

if(starHour<9){

starHour = 9;

}

//如果开始时间大于17点,

if(starHour>18){

starHour = 18;

}

if(endHour<9){

endHour =9;

}

//1.3

if(endHour>18){

endHour = 18;

}

if(0< dayinweek && dayinweek <6 && dayendweek == 0 ||  0< dayinweek && dayinweek <6 && dayendweek == 6){

travelTimeHours +=(weekendBetween(dayNum) - 1)*8;

}else if(0< dayendweek && dayendweek <6 && dayinweek == 0 ||  0< dayendweek && dayendweek <6 && dayinweek == 6 ){

travelTimeHours +=(weekendBetween(dayNum) - 1)*8;

}else if(dayinweek !=6 && dayinweek !=0 && dayendweek !=6 && dayendweek !=0){

travelTimeHours +=(weekendBetween(dayNum) - 2)*8;

}

if(dayinweek !=6 && dayinweek !=0){

if(starHour>=9 && starHour<=12){

travelTimeHours+=8;

}

if(starHour>=13 && starHour<=18){

travelTimeHours+=4;

}

}

if(dayendweek !=6 && dayendweek !=0){

if(endHour>=9 && endHour<=12){

travelTimeHours+=4;

}

if(endHour>=13 && endHour<=18){

travelTimeHours+=8;

}

}

}

var timeDays = travelHours / 8;

var travelTime = travelTimeHours /8;

var travelTimeDay = timeDays + travelTime;

if(enFund){

enFund(travelTimeDay)

}

// 去除周六日  ;

function weekendBetween(dayNum){

var iNow = 0;

dayNum =dayNum +1;

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

var firstDay = startWeek % 7;

if(firstDay==0) firstDay=7;

if (firstDay < 6) {

iNow++;

}

if (firstDay == 7) {

firstDay = 1;

}

startWeek ++;

}

return iNow;

}

}

</script>

</body>

</html>

原文地址:https://www.cnblogs.com/lcc1995/p/8118493.html

时间: 2024-10-16 22:07:28

js 计算请假时长(去除了周六日,节假日未清除)的相关文章

用js获取视频播放时长

用js实现读取本地mp4文件时长 利用h5 video标签加载视频文件,在读取duration就可以了 问题在于要更换文件,使用<input type="file" > 标签发现读取的文件路径是隐藏的c:/fakepath/xxx.mp4 给video更换src时候会提示找不到文件... 又找了很久,大多是加载flash控件然后通过flash再取,不太喜欢这么做. 如今这H5的时代感觉这个小功能应该不是问题,又想了想,之前做过js读取本地图片在web上做预览,估计读个视频应

嵌入视频,计算观看时长

通过获取腾讯视频的vid 在页面内通过iframe嵌入视频 <iframe id="my-videos" frameborder="0" width="960px" height="400px" src="https://v.qq.com/txp/iframe/player.html?vid=q00273zq6vy" allowFullScreen="true"></i

java中最简单的计算执行时长的方式

日常在做一些性能测试的时候会通过执行时间来判断执行时长,java中最简单的方式如下: //开始时间 long startL= new Date().getTime(); //这里需要导入 java.util.*;包 exceFun(); long endL= new Date().getTime(); //执行时间 System.out.println("startL:"+senStrat +" endL:"+senEndL +" 执行时长:"

js用img代替ajax js心跳 向服务器定时传送参数 主要计算用户在线时长

html: <!doctype html><html><head><meta charset="utf-8"><title>记录用户的在线时长</title></head> <body></body></html><script type="text/javascript"> var Statistics_Website_logo ={

JS获取时间段内的工作时长

需求 1.给一个开始时间和结束时间: 2.计算在时间段内工作时间长度: 3.工作时间是9点-18点: 4.工作时长是8小时: 5.不记录周六和周日时间: 插件 使用了moment.js 代码 1 function GetWorkHours(beginDateTime, endDateTime) { 2 var _totalHour = 0; 3 //1.获取开始时间和结束时间之间的日 4 var _beginDate = moment(beginDateTime); 5 var _endDate

JS计算指定日期是距今的第几周,星期几

无意中在百度知道上发现这样一个问题,就抽时间见写了一个函数. 首先我们需要明确,既然是指定日期距今的第几周,那么就要知道指定的日期是什么,而且是不能确定的,会根据使用者不同而得到不同的日期,所以我们需要将这个日期设置为参数,由使用者决定. 下面我们一起来看一下这段代码: 1 (function(){ 2 /* 3 * 说明: 4 * 一周的起始计算方式不同国家有所不同,很多其他国家将周日作为一周的开始 5 * 本代码使用中国习惯,将周一作为每周的开始 6 * 特此说明 7 */ 8 9 func

hive计算网页停留时长

hive表结构例如以下: create table pv_user_info( session_id string, user_id string, url string, starttime bigint ); 主要就是这几个字段实用.省略其它. 实现方式:userid和sessionid分组后并按时间降序排序,降序排序后.第一行就是该用户最后一次浏览的网页.最后一行是第一次浏览的网页,第一行的starttime和第二行的starttime相减就是第二行停留时间. 这里会有几个误差 用户最后一

阿里校招:前端线上笔试题--计算鼠标在页面某个区域内的停留时长

校招:阿里前端笔试题收到笔试通知后恶补了几天阿里前端历年笔试题,巧的是这道题今年有同学做过,而且发到了北邮人bbs上(看来临阵磨枪还是有用的),现在贴上当时提交的代码. 水平有限,有错误烦请指点. 题目: <div class='mod-spm'data-spmid='123'> <divclass='child_a'></div> <divclass='child_b'></div> <divclass='child_c'><

计算部落冲突时长的工具

今天闲来无事,想找一个计算部落冲突建筑升级时间.发现没有得心应手的,就自己写了一个控制台输出的小程序. import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class T5 { public static void main(String[] args) { //获取当前系统毫秒 Date nowDate=new Date(System.currentTimeMill