<script language=javascript>
/*8位以上数字都支持*/
function calculateYMD(sdate,edate){//YYYYMMDD
if(sdate.length < 8){
alert("Please input valid date.[YYYYMMDD]");
return null;
}
if(edate.length < 8){
alert("Please input valid date.[YYYYMMDD]");
return null;
}
var year = parseInt(sdate.substring(0, 4),10);
var month = parseInt(sdate.substring(4, 6),10) - 1;//month:0~11
var day = parseInt(sdate.substring(6, 8),10);
var objSDate = new Object();
objSDate.year = year;
objSDate.month = month;
objSDate.day = day;
if(sdate.length > 8){
objSDate.hour = parseInt(sdate.substring(8, 10),10);
}
if(sdate.length > 10){
objSDate.minute = parseInt(sdate.substring(10, 12),10);
}
if(sdate.length > 12){
objSDate.second = parseInt(sdate.substring(12, 14),10);
}
if(sdate.length > 14){
objSDate.ms = parseInt(sdate.substring(14, 17),10);
}
year = parseInt(edate.substring(0, 4),10);
month = parseInt(edate.substring(4, 6),10) - 1;//month:0~11
day = parseInt(edate.substring(6, 8),10);
var objEDate = new Object();
objEDate.year = year;
objEDate.month = month;
objEDate.day = day;
if(edate.length > 8){
objSDate.hour = parseInt(edate.substring(8, 10),10);
}
if(edate.length > 10){
objSDate.minute = parseInt(edate.substring(10, 12),10);
}
if(edate.length > 12){
objSDate.second = parseInt(edate.substring(12, 14),10);
}
if(edate.length > 14){
objSDate.ms = parseInt(edate.substring(14, 17),10);
}
//objEDate.hour = 0;
//objEDate.minute = 0;
//objEDate.second = 0;
//objEDate.ms = 0;
var daycount = calculate(objSDate,objEDate);
alert(daycount);
return daycount;
}
function calculateY_M_D(sdate,edate,separator){//YYYY-MM-DD,YYYY/MM/DD
var sArray = sdate.split(separator);
if(sArray.length < 3){
alert("Please input valid date.[YYYY" + separator + "MM" + separator + "DD]");
return null;
}
//alert(sArray);
var year = parseInt(sArray[0],10);
var month = parseInt(sArray[1],10) - 1;//month:0~11
var day = parseInt(sArray[2],10);
var objSDate = new Object();
objSDate.year = year;
objSDate.month = month;
objSDate.day = day;
if(sArray.length > 3){
objSDate.hour = parseInt(sArray[3],10);
}
if(sArray.length > 4){
objSDate.minute = parseInt(sArray[4],10);
}
if(sArray.length > 5){
objSDate.second = parseInt(sArray[5],10);
}
if(sArray.length > 6){
objSDate.ms = parseInt(sArray[6],10);
}
sArray = edate.split(separator);
if(sArray.length < 3){
alert("Please input valid date.[YYYY" + separator + "MM" + separator + "DD]");
return null;
}
//alert(sArray);
year = parseInt(sArray[0],10);
month = parseInt(sArray[1],10) - 1;//month:0~11
day = parseInt(sArray[2],10);
var objEDate = new Object();
objEDate.year = year;
objEDate.month = month;
objEDate.day = day;
if(sArray.length > 3){
objEDate.hour = parseInt(sArray[3],10);
}
if(sArray.length > 4){
objEDate.minute = parseInt(sArray[4],10);
}
if(sArray.length > 5){
objEDate.second = parseInt(sArray[5],10);
}
if(sArray.length > 6){
objEDate.ms = parseInt(sArray[6],10);
}
var daycount = calculate(objSDate,objEDate);
alert(daycount);
}
function calculate(sdate,edate){
var dateS;
var dateE;
if(sdate.ms){
dateS = new Date(sdate.year,sdate.month,sdate.day,sdate.hour,sdate.minute,sdate.second,sdate.ms);
}else if(sdate.second){
dateS = new Date(sdate.year,sdate.month,sdate.day,sdate.hour,sdate.minute,sdate.second);
}else if(sdate.minute){
dateS = new Date(sdate.year,sdate.month,sdate.day,sdate.hour,sdate.minute);
}else if(sdate.hour){
dateS = new Date(sdate.year,sdate.month,sdate.day,sdate.hour);
}else{
dateS = new Date(sdate.year,sdate.month,sdate.day);
}
if(edate.ms){
dateE = new Date(edate.year,edate.month,edate.day,edate.hour,edate.minute,edate.second,edate.ms);
}else if(edate.second){
dateE = new Date(edate.year,edate.month,edate.day,edate.hour,edate.minute,edate.second);
}else if(edate.minute){
dateE = new Date(edate.year,edate.month,edate.day,edate.hour,edate.minute);
}else if(edate.hour){
dateE = new Date(edate.year,edate.month,edate.day,edate.hour);
}else{
dateE = new Date(edate.year,edate.month,edate.day);
}
var oneDay = 1*24*60*60*1000;
var cnt_f = (dateE - dateS)/oneDay;
//alert("cnt_f:" + cnt_f);
var cnt_s = new String(cnt_f);
var cnt_i = 0;
if(cnt_s.indexOf(".") < 0) {
cnt_i = parseInt(cnt_f,10);
} else {
cnt_i = parseInt(cnt_f,10) + 1;
}
return cnt_i;
}
</script>
<input type=text name=sdate value="20101118132433100" size=40>~<input type=text name=edate value="20101201144433100" size=40>
<br/>
<input type=button value=calculateYMD οnclick="calculateYMD(sdate.value, edate.value);">
<br/>
<input type=text name=sdate2 value="2010/11/18/13/24/33/100" size=40>~<input type=text name=edate2 value="2010/12/01/14/44/33/100" size=40>
<br/>
<input type=button value=calculateY_M_D οnclick="calculateY_M_D(sdate2.value, edate2.value, '/');">
<!--为什么calculateYMD、calculateY_M_D算出来的值不一样-->