PHP函数从日期算起年龄

使用以下函数可以计算出事件发生后已经过去了多少年。如果您想根据某人的生日确定其年龄,这将很有用。

该函数通过使用PHPstrtotime()函数标准化日期格式来工作。这是该功能的第一步,并根据日期是否有效进行排序。完成此操作后,日期将格式化为yyyy-mm-dd的标准格式,然后使用explode()函数将其拆分。然后从当前年份中减去输入日期的年份,以年为单位给出年龄。最后检查以确保日期尚未过去,并从年份值中减去一个以得出更准确的结果。这是函数:

function dateToAge($birthday){

 if (($cleaned = strtotime($birthday)) === false){

  return false; // 格式不可读

 };

 

 list($year, $month, $day) = explode('-', date('Y-m-d', $cleaned));

 $age = date('Y') - $year;

 

 if (mktime(0,0,0,$month,$day,date('Y')) < mktime()){

  // 生日还没过去,所以从年龄减去一年

  $age--;

 };

 

 return $age;

}

这是正在使用的函数的示例:

echo '01/20/1980'.birthday('01/20/1980'); // prints 27

此功能有一个问题,就是您不确定日期是否采用标准格式。有些文化将日期设置为日/月,而其他文化则将日期设置为月/日。即使日期正确,这也可以使函数不返回任何内容。因此,以下内容:

echo '20-01-1979 '.birthday('20-01-1980');

返回false。

下面的函数通过尝试清除输入的日期来解决此问题,以便程序在最初不是有效日期时可以将其识别出来。

function dateToAge($birthday){

 if (($cleaned = strtotime($birthday)) === false){

  if(strpos($birthday,'/')!==false){

   $birthday = explode('/',$birthday);

   if(count($birthday)==3){

    $birthday = $birthday[1].'/'.$birthday[0].'/'.$birthday[2];

   };

  };

  if(strpos($birthday,'-')!==false){

   $birthday = explode('-',$birthday);

   if(count($birthday)==3){

    $birthday = $birthday[1].'-'.$birthday[0].'-'.$birthday[2];

   };

  };

  if (($cleaned = strtotime($birthday)) === false){

   return false; // 格式不可读

  };

 };

 

 list($year, $month, $day) = explode('-', date('Y-m-d', $cleaned));

 $age = date('Y') - $year;

 

 if (mktime(0,0,0,$month,$day,date('Y')) < mktime()){

  // 生日还没过去,所以从年龄减去一年

 $age--;

 };

 

 return $age;

}

 

以上是 PHP函数从日期算起年龄 的全部内容, 来源链接: utcz.com/z/354452.html

回到顶部