<script language="javascript">
function DateDiff(date1, date2)
{
//小时差别
date1=date1.substring(5,9).replace(/\-/g,'/')+'/'+date1.substring(0,4)+' '+date1.substring(11);
date2=date2.substring(5,9).replace(/\-/g,'/')+'/'+date2.substring(0,4)+' '+date2.substring(11);var objDate1=new Date(date1);
var objDate2=new Date(date2);
return (objDate1.getTime()-objDate2.getTime())/1000/3600;
}</script>
<input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff('2005-09-22 18:00', value)">
<input type="text" name="showdiff">
function DateDiff(date1, date2)
{
//小时差别
date1=date1.substring(5,9).replace(/\-/g,'/')+'/'+date1.substring(0,4)+' '+date1.substring(11);
date2=date2.substring(5,9).replace(/\-/g,'/')+'/'+date2.substring(0,4)+' '+date2.substring(11);var objDate1=new Date(date1);
var objDate2=new Date(date2);
return (objDate1.getTime()-objDate2.getTime())/1000/3600;
}</script>
<input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff('2005-09-22 18:00', value)">
<input type="text" name="showdiff">
时间格式为:'2005-09-22 18:00'<script language=Javascript>
function DateDiff(firstd,secondd)
{
var ostr=firstd.split("-");
var sstr=ostr[2].split(" ");
firstd=ostr[1]+"/"+sstr[0]+"/"+ostr[0]+" "+sstr[1]
var a = new Date(firstd)var ostr=secondd.split("-");
var sstr=ostr[2].split(" ");
secondd=ostr[1]+"/"+sstr[0]+"/"+ostr[0]+" "+sstr[1]
var b = new Date(secondd)a = b.valueOf()-a.valueOf()
a = new Date(a)
return a.getFullYear() + "-" + (a.getMonth() + 1) + "-" + a.getDate() + " " + a.getHours() + ":" + a.getMinutes()
}
</script><input type="text" name="firstinput">
<input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff(document.all.firstinput.value, value)">
<input type="text" name="showdiff">
时间格式为:'09/22/2005 18:00'
<script language=Javascript>
function DateDiff(firstd,secondd)
{
var a = new Date(firstd)
var b = new Date(secondd)a = b.valueOf()-a.valueOf()
a = new Date(a)
return (a.getMonth() + 1) + "/" + a.getDate() + "/" + a.getFullYear() + " " + a.getHours() + ":" + a.getMinutes()
}
</script><input type="text" name="firstinput">
<input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff(document.all.firstinput.value, value)">
<input type="text" name="showdiff">
<script language=Javascript>
function DateDiff(firstd,secondd)
{
var a = new Date(firstd)
var b = new Date(secondd)//a = (b-a)/60000
a = (b-a)/3600000//返回小时数
return a
}
</script><input type="text" name="firstinput" value="09/22/2005 18:00">
<input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff(document.all.firstinput.value, value)" value="09/23/2005 18:00">
<input type="text" name="showdiff">
由于时间格式都是没有做过验证的,所以当输入的格式不符合时,返回的数据就会错误。<script language=Javascript>
function DateDiff(firstd,secondd)
{
var fstr=firstd.split("-");
firstd=fstr[1]+"/"+fstr[2]+"/"+fstr[0]
var a = new Date(firstd)var sstr=secondd.split("-");
secondd=sstr[1]+"/"+sstr[2]+"/"+sstr[0]
var b = new Date(secondd)a = (b-a)/24/3600000;
if(a>0) return "后了:"+ a + "天";
if(a<0) return "前了:"+ a + "天";
if(a==0) return "两时间相等";}
</script><input type="text" name="firstinput" value="2005-09-22">
<input type="text" name="secondinput" onblur="document.all.showdiff.value=DateDiff(document.all.firstinput.value,value)" value="2005-09-22">
<input type="text" name="showdiff">
<html>
<head>
<title>时间</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><script src="../../js/date.js"></script>
</head>
<body>
<br> <table width="97%" border="0" align="center" cellpadding="2" cellspacing="0" class=wikitable>
<tr>
<td class="End">开始</td>
<td class="End">结束</td>
<td width="60" class="End">时长</td>
</tr>
<tr>
<td> <input name="startDate" type="text" onFocus="calendar()">
</td>
<td><input name="endDate" type="text" onFocus="calendar()"></td>
<td><input name="timeLong" type="text"></td>
</tr>
<tr>
<td><input name="startDate" type="text" onFocus="calendar()"></td>
<td><input name="endDate" type="text" onFocus="calendar()"></td>
<td><input name="timeLong" type="text"></td>
</tr>
<tr>
<td><input name="startDate" type="text" onFocus="calendar()"></td>
<td ><input name="endDate" type="text" onFocus="calendar()" ></td>
<td><input name="timeLong" type="text"></td>
</tr>
<tr>
<td><input name="startDate" type="text" onFocus="calendar()"></td>
<td><input name="endDate" type="text" onFocus="calendar()"></td>
<td><input name="timeLong" type="text" ></td>
</tr>
<tr>
<td> <input name="startDate" type="text" onFocus="calendar()">
</td>
<td><input name="endDate" type="text" onFocus="calendar()"></td>
<td><input name="timeLong" type="text" ></td>
</tr>
<tr>
<td><input name="startDate" type="text" onFocus="calendar()"></td>
<td><input name="endDate" type="text" onFocus="calendar()"></td>
<td><input name="timeLong" type="text"></td>
</tr>
</table></body>
</html>
因为onFocus="calendar()"造成了input框中所有的事件失效,所以暂时只想到修改date.js的方法来解决。只对文档尾部作了修改:在尾部添加了DateDiff()函数,在原有date.js中插入了一条响应DateDiff()函数的语句。楼上的源代码不用更改。
date.js文件中被修改部份的代码见下:
……………………………………function returnDate() //根据日期格式等返回用户选定的日期
{
if(WebCalendar.objExport)
{
var returnValue;
var a = (arguments.length==0) ? WebCalendar.day[this.id.substr(8)].split("/") : arguments[0].split("/");
var d = WebCalendar.format.match(/^(\w{4})(-|\/|.|)(\w{1,2})\2(\w{1,2})$/);
if(d==null){alert("你设定的日期输出格式不对!\r\n\r\n请重新定义 WebCalendar.format !"); return false;}
var flag = d[3].length==2 || d[4].length==2; //判断返回的日期格式是否要补零
returnValue = flag ? a[2] +d[2]+ appendZero(a[1]) +d[2]+ appendZero(a[0]) : a[2] +d[2]+ a[1] +d[2]+ a[0];
if(WebCalendar.timeShow)
{
var h = new Date().getHours(), m = new Date().getMinutes(), s = new Date().getSeconds();
returnValue += flag ? " "+ appendZero(h) +":"+ appendZero(m) +":"+ appendZero(s) : " "+ h +":"+ m +":"+ s;
}
WebCalendar.objExport.value = returnValue;
hiddenCalendar();//这里插入了响应计算时差函数的语句。 DateDiff(WebCalendar.objExport);
}
}
function document.onclick()
{
if(WebCalendar.eventSrc != window.event.srcElement) hiddenCalendar();
}
//在这里添加了计算时差的函数
function DateDiff(selobj){
var linenum=selobj.parentElement.parentElement.rowIndex-1;
var secondd=document.getElementsByName("endDate")[linenum].value;
var firstd=document.getElementsByName("startDate")[linenum].value;
var returnval=""; var fstr=firstd.split("-");
firstd=fstr[1]+"/"+fstr[2]+"/"+fstr[0]
var a = new Date(firstd) var sstr=secondd.split("-");
secondd=sstr[1]+"/"+sstr[2]+"/"+sstr[0]
var b = new Date(secondd) a = (b-a)/24/3600000;
if(a>0) returnval="后了:"+ a + "天";
if(a<0) returnval="前了:"+ -a + "天";
if(a==0) returnval="两时间相等";
document.getElementsByName("timeLong")[linenum].value=returnval;
}//-->