比如我要计算从2009-10-12 到 现在,一共有多少个月?怎么算呢?

解决方案 »

  1.   

    这个,看你需求吧,比如2009-01-31   2009-02-01这两个时间算一个月么?如果是 (date("Y")-2009) * 12 + date("m") - 10;
      

  2.   

    mktime 不好算,还是用一楼的吧!
      

  3.   

    我有个不是太好的办法你可以在最低时间上增量在加28天,然后算出这个时间的年月,添加进数组,去重,,count(数组)就是月数了
      

  4.   

    $t = '2009-10-12';$s = date('(Y*12+m)') .'-'. date('(Y*12+m)', strtotime("$t"));echo eval('return '.date('(Y*12+m)') .'-'. date('(Y*12+m)', strtotime($t)).';');
      

  5.   

    $arr = explode('-', '2009-10-12');
    $y = date('Y', time()) - $arr[0];
    echo $y * 12 - $arr[1] + date('m', time());
      

  6.   

    echo (date("Y")-2009) * 12 + date("m") - 10 + round((date("d") - 12)/30);
      

  7.   

    echo (date("Y")-2009) * 12 + date("m") - 10 + floor((date("d") - 12)/15);
      

  8.   

    $date = intval((time()-strtotime("2010-01"))/30/24/3600);
    echo $date;
    30代表一个月30天  24代表一天24小时  3600代表一个小时
    用现在的时间减去你要计算的时间,获得的就是两个时间的差集
    时间加减一定要转化为时间戳
      

  9.   


    $dateUnit = 'month';
    $dateType = 'Y-m';
            $startdate_1 = $start;
    $enddate_1 =  $end;
    $endMillisecond_1 = strtotime($enddate_1);//终止日期对应的毫秒数
    while(true){
    $nextDate_1 = date('Y-m-d',strtotime("$startdate_1 + $part $dateUnit"));//得到下一个具体的日期
    $nextMillisecond_1 = strtotime("$nextDate_1");
    if($nextMillisecond_1 > $endMillisecond_1){
    break;
    }
    $part++;
    }