try
-------------------------------------------------
<script language="javascript">alert(dateDiffYear("1980-3-3","1982-3-2"));function dateDiffYear(dateStart,dateEnd){
var start = dateStart.split("-");
var end = dateEnd.split("-");
var year = end[0]-start[0];
if(end[1] > start[1])
return year;
else if(end[1] == start[1]){
if(end[2]*1 + 1 >= start[2])
return year;
}
return year-1;
}
</script>

解决方案 »

  1.   

    先谢leohuang(LEO) 的回复
    我才刚调试了一下你的程序有一个不能满足 
    例如 alert(dateDiffYear("1980-2-1","1982-1-31")); 也因该是满2年的
    但显示的仍是1 希望得到你的解答 多谢
      

  2.   

    try this
    -------------------------------------------
    <script language="javascript">alert(dateDiffYear("1980-2-1","1982-1-31"));function dateDiffYear(dateStart,dateEnd){
    var arr = dateStart.split("-");
    var sDate = new Date(arr[0],arr[1],arr[2]);
    var arr = dateEnd.split("-");
    var eDate = new Date(arr[0],arr[1],arr[2]*1+1);
    var year = eDate.getFullYear() - sDate.getFullYear(); 
    if(eDate.getMonth() > sDate.getMonth() || (eDate.getMonth() == sDate.getMonth() && eDate.getDate() >= sDate.getDate()))
    return year;
    else
    return year-1;
    }
    </script>
      

  3.   

    再谢leohuang(LEO)
    例如 alert(dateDiffYear("1980-5-1","1982-4-30"));
    就出现是1 
    可能是 不区分大月(31) 小月(30) 和2月(28/29)我知道这个问题比较麻烦 但希望解决我会再开一贴50分送上
    求解答 多谢了
      

  4.   

    而这个回显示 2
    alert(dateDiffYear("1980-4-1","1982-3-30")); 
    应该显示1 因为3月有31天 
      

  5.   

    头一回发现这个问题,我以为js会自动加上去一个月<script language="javascript">
    alert(dateDiffYear("1980-5-1","1982-4-30"));
    function dateDiffYear(dateStart,dateEnd){
    var sDate = new Date(dateStart.replace(/-/g,"/"));
    var arr = dateEnd.split("-");
    var eDate = new Date(arr[0]+"/" + arr[1] + "/" + arr[2]*1+1);
    var year = eDate.getFullYear() - sDate.getFullYear(); 
    if(eDate.getMonth() > sDate.getMonth() || (eDate.getMonth() == sDate.getMonth() && eDate.getDate() >= sDate.getDate()))
    return year;
    else
    return year-1;
    }
    </script>
      

  6.   

    我自己弄出来 不过还是要谢谢你
    function dateDiffYear(dateStart,dateEnd)
    {
    var arr1 = dateStart.split("-");
    var arr2 = dateEnd.split("-");
    var year = arr2[0] - arr1[0]; 
    if(arr2[1]>=arr1[1] && arr2[2]>=arr1[2]-1)
    { return year;}
    else 
    { if(arr1[2]==1)
    {
    if((arr2[1]==1 || arr2[1]==3 || arr2[1]==5 || arr2[1]==7 || arr2[1]==8 || arr2[1]==10 || arr2[1]==12) && arr2[2]==31)
    return year;
    if((arr2[1]==4 || arr2[1]==6 || arr2[1]==9 || arr2[1]==11) && arr2[2]==30)
    return year;
    if(arr2[1]==2)
    if((arr2[0]%4 == 0 && arr2[0]%100 != 0|| arr2[0]%100 == 0 && arr2[0]%400 == 0) && arr2[2]==29)
    return year;
    else if((arr2[0]%4 != 0 || arr2[0]%100 == 0) && arr2[2]==28)
    return year;
    else
    return year-1
    }
    return year-1;
    }
    }