Javascript计算两个日期相隔的月数

作者: Robin 分类: Asp.net 发布时间: 2010-03-23 17:48

这里有两个方法可以实现。
第一种:
<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”>&nbsp;&nbsp;*格式为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> 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签云