计算PHP中2个日期之间的年数

Dee*_*pak 31 php date

我需要提供2个日期之后的年数.这是我的代码:

function daysDifference($endDate, $beginDate)
{
   $date_parts1=explode("-", $beginDate);
   $date_parts2=explode("-", $endDate);

   $start_date=gregoriantojd($date_parts1[1], $date_parts1[2], $date_parts1[0]);
   $end_date=gregoriantojd($date_parts2[1], $date_parts2[2], $date_parts2[0]);
   $diff = $end_date - $start_date;
   echo $diff;
   $years = floor($diff / (365.25*60*60*24));
   return $years;
}

echo daysDifference('2011-03-12','2008-03-09');
Run Code Online (Sandbox Code Playgroud)

$diff给出了一些输出.当我回来时$years,我正在0.我做错了什么?

Mat*_*hew 122

$d1 = new DateTime('2011-03-12');
$d2 = new DateTime('2008-03-09');

$diff = $d2->diff($d1);

echo $diff->y;
Run Code Online (Sandbox Code Playgroud)

  • 是的,这个应该是推荐的. (2认同)

小智 8

在PHP 5.2盒子上(是的,它们实际上仍然存在),因此在没有DateTime :: diff()支持的情况下,我最终使用了:

$dateString='10-05-1975';
$years = round((time()-strtotime($dateString))/(3600*24*365.25))
Run Code Online (Sandbox Code Playgroud)


Pas*_*TIN -4

如果您想要两个日期之间的年数,为什么不直接使用以下内容:

function yearsDifference($endDate, $beginDate)
{
   $date_parts1=explode("-", $beginDate);
   $date_parts2=explode("-", $endDate);
   return $date_parts2[0] - $date_parts1[0];
}

echo yearsDifference('2011-03-12','2008-03-09');
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这会让你:

3
Run Code Online (Sandbox Code Playgroud)