PHP - 如何计算特定日期的月数

时间:2011-01-14 19:03:09

标签: php

如何使用程序样式方法计算以下两个日期的月数?

PHP代码。

$delete_date = "2000-01-12 08:02:39";
$current_date = date('Y-m-d H:i:s'); //current date

6 个答案:

答案 0 :(得分:6)

您正在寻找DateTime::diff

$delete_date = "2000-01-12 08:02:39";
$date_format = 'Y-m-d H:i:s';
$current_date = date($date_format);
$diff = date_diff(date_create_from_format($date_format, $delete_date), date_create());
$months = $diff->m;

有些事情。

答案 1 :(得分:2)

使用DateTime,您将获得这样的总月数:

$d1 = new DateTime("2000-01-12 08:02:39");
$d2 = new DateTime();
$d3 = $d1->diff($d2);
$months = ($d3->y*12)+$d3->m;

您仍然需要处理剩余的日期$d3->d ......但这取决于您的需求。

答案 2 :(得分:1)

答案 3 :(得分:0)

$delete_date = "2000-01-12 08:02:39";
$current_date = date('Y-m-d H:i:s'); //current date

$diff = strtotime($current_date) - strtotime($delete_date);
$months = floor(floatval($diff) / (60 * 60 * 24 * 365 / 12));
echo $months . "\n";

答案 4 :(得分:0)

这就是你要找的东西吗?

$delete_date = "2000-01-12 08:02:39";
$current_date = date('Y-m-d H:i:s'); //current date

// convert date to int
$delete_date = strtotime($delete_date);
$current_date = strtotime($current_date);

// calculate it
$diff = $delete_date - $current_date;

// convert int to time
$conv_diff = date('format', $diff);

答案 5 :(得分:-2)

尝试这个,很容易,也许不够小鸡,但非常有效。

function calculateMonthsBetweenDates($fMonth, $fDay, $fYear, $tMonth, $tDay, $tYear)
{
    //Build datetime vars using month, day and year
    $dateFrom = mktime(0, 0, 0, $fMonth, $fDay, $fYear);
    $dateTo   = mktime(0, 0, 0, $tMonth, $tDay, $tYear);

    //Check dateTo is a later date than dateFrom.
    if($dateFrom<=$dateTo){
        $yearF  = date("Y", $dateFrom);
        $yearT  = date("Y", $dateTo);
        $monthF = date("m", $dateFrom);
        $monthT = date("m", $dateTo);

        //same year
        if ($yearF == $yearT)
            $months = ($monthT - $monthF);
        else{
        //different year
            $months = (12*($yearT-$yearF)-$monthF) + $monthT;
            }
        return $months;
        }
    else
       return false; //or -1
}