这里有两个方法可以实现。
第一种:
<script language="javascript">
//参数:startDate--开始日期;endDate--结束日期
//方法:分别比较日期、月份、年份的差额,根据差额进行进位,借位的计算
function DateDiff(startDate,endDate)
{
var sDate = new Date(Date.parse(startDate.replace(/-/g, "/"))); //转化成日期对象
var eDate = new Date(Date.parse(endDate.replace(/-/g, "/")));
//获得各自的年、月、日
var sY = sDate.getFullYear();
var sM = sDate.getMonth()+1;
var sD = sDate.getDate();
var eY = eDate.getFullYear();
var eM = eDate.getMonth()+1;
var eD = eDate.getDate();
//var flagD = 0; //日期标记:
var flagM = 0; //月份进/减位标记
var flagY = 0; //年份进/减位标记
var months = 0; //相隔约数,返回值
var d = eD - sD; //日期相差天数
if(d>0&&d>=15) //如果为正,且大于15天,月份进一
{
flagM = 1;
}
if(d<0&&30+d<15) //如果为负,且相隔天数<15,月份减一
{
flagM = -1;
}
var m = eM + flagM - sM; //相隔月数 = 结束月份 + 月份进/减位标记 - 开始月份
if(m<0) //如果小于0,年数减一,月数为12减去相隔月数
{
flagY = -1;
m = 12 + m
}
var y = eY + flagY - sY //相隔年数 = 结束年份 + 年份进/减位标记 - 开始年份
if(y>=0) //如果大于等于0,则返回值为年份数*12 + 月份数,否则返回0
months = y*12 + m
document.getElementById("txtMonths").value = months;
}
</script>
开始日期:<input name="txtStartDate"> *格式为2006-01-01<br>
结束日期:<input name="txtEndDate"><br>
相隔月份数:<input name="txtMonths"><br>
<input type="button" value="显示相隔月份数" onClick="javascript:DateDiff(document.getElementById('txtStartDate').value,document.getElementById('txtEndDate').value);">
第二种:
<script>
function getMonthCZ(dt1,dt2){
return dt2.getFullYear()*12+dt2.getMonth()-(dt1.getFullYear()*12+dt1.getMonth());
}
alert(getMonthCZ(new Date("2004/10/3"),new Date("2006/1/3")))
</script>