//var beginDateTag= document.form1.DATA_8;这个是获取要显示开始日期的文本框标签
// var dayTag=document.form1.DATA_6;这个是获取要显示天数的文本框的标签
window.οnlοad=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.οnchange=function(){
if(endTimeTag.value!=""&&beginTimeTag.value!=""&&endTimeTag.value!="")
{
dayTag.value=getDay();
}
}
endDateTag.οnchange=function(){
if(beginDateTag.value!=""&&beginTimeTag.value!=""&&endTimeTag.value!="")
{
dayTag.value=getDay();
}
}
beginTimeTag.οnchange=function(){
if(beginDateTag.value!=""&&endDateTag.value!=""&&endTimeTag.value!="")
{
dayTag.value=getDay();
}
}
endTimeTag.οnchange=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;
}
// var dayTag=document.form1.DATA_6;这个是获取要显示天数的文本框的标签
window.οnlοad=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.οnchange=function(){
if(endTimeTag.value!=""&&beginTimeTag.value!=""&&endTimeTag.value!="")
{
dayTag.value=getDay();
}
}
endDateTag.οnchange=function(){
if(beginDateTag.value!=""&&beginTimeTag.value!=""&&endTimeTag.value!="")
{
dayTag.value=getDay();
}
}
beginTimeTag.οnchange=function(){
if(beginDateTag.value!=""&&endDateTag.value!=""&&endTimeTag.value!="")
{
dayTag.value=getDay();
}
}
endTimeTag.οnchange=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;
}