您的位置:首页 > Web前端 > JavaScript

js实现请假天数自动生成/带出(简易版:不处理周日周六等放假时段)

2018-01-18 21:39 393 查看
//var beginDateTag= document.form1.DATA_8;这个是获取要显示开始日期的文本框标签
// var dayTag=document.form1.DATA_6;这个是获取要显示天数的文本框的标签
window.onload=function(){
      var beginDateTag= document.form1.DATA_8;
  var endDateTag= document.form1.DATA_10;
  var beginTimeTag= document.form1.DATA_9;
  var endTimeTag= document.form1.DATA_11;
  var dayTag=document.form1.DATA_6;
            beginDateTag.onchange=function(){
              if(endTimeTag.value!=""&&beginTimeTag.value!=""&&endTimeTag.value!="")
              {
                dayTag.value=getDay();
              }
            }
              endDateTag.onchange=function(){
              if(beginDateTag.value!=""&&beginTimeTag.value!=""&&endTimeTag.value!="")
              {
            dayTag.value=getDay();
              }
            }
               beginTimeTag.onchange=function(){
              if(beginDateTag.value!=""&&endDateTag.value!=""&&endTimeTag.value!="")
              {
            dayTag.value=getDay();
              }
            }
                endTimeTag.onchange=function(){
              if(beginDateTag.value!=""&&endDateTag.value!=""&&beginTimeTag.value!="")
              {
            dayTag.value=getDay();
              }
            }
            function getDay()
            {
            var beginDate=beginDateTag.value.replace(/-/g, "/");
var endDate=endDateTag.value.replace(/-/g, "/");
var beginTime=beginTimeTag.value;
var endTime=endTimeTag.value;
            var validTime=isValidDateTime(beginDate, endDate, beginTime, endTime);
                if(validTime) {
var d=calculateDay(beginDate, endDate, beginTime, endTime);
return d;

                else {
alert("结束时间必须大于开始时间")
return "";
}
            }
                                       
}

function isValidDateTime(beginDate, endDate, beginTime, endTime) {

var bDateTime = new Date(beginDate + " " + beginTime);
var eDateTime = new Date(endDate + " " + endTime);
if(eDateTime.getTime() <= bDateTime.getTime()) {
return false;
} else {

return true;
}
}

function calculateDay(beginDate, endDate, beginTime, endTime) {
var hour = 60 * 60 * 1000;
var bTimeStr = beginTime.split(":");
var eTimeStr = endTime.split(":");
var bDate = new Date(beginDate);
var eDate = new Date(endDate);
var bTime = bTimeStr[0] * hour + bTimeStr[1] * 60 * 1000 + bTimeStr[2] * 1000;
var eTime = eTimeStr[0] * hour + eTimeStr[1] * 60 * 1000 + eTimeStr[2] * 1000;
var days = 0.0;
var half = 0.5;
var allDay = 1.0;
var AM_UpHour = 8 * hour;
var AM_DownHour = 12 * hour;
var PM_UpHour = 13.5 * hour;
var PM_DownHour = 17.5 * hour;
//相隔天数
var n = (eDate.getTime() - bDate.getTime()) / (hour * 24);
if(n > 1) {
days = n - 1;
                    
}
//如果是同一天
if(beginDate == endDate) {
if(bTime < AM_DownHour) {
if(eTime <= PM_UpHour) {
days += half;
} else {
days += allDay;
}
} else {
days += allDay;
}
}
//不是同一天
else {
             
//计算开始的那一天的
//如果开始时间<早上下班时间+1.0
if(bTime < AM_DownHour) {
days += allDay;
}
//如果是下午开始
else {
days += half;
}
//计算结束的那一天
//如果是早上结束+0.5
if(eTime <= PM_UpHour) {
days += half;
}
//如果是下午结束+1.0
else {
days += allDay;
}
}

return days;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: