计算输入的两个日期值之差

<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算出来的值不一样-->

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值