基于百分比的Php平均两个日期

时间:2014-05-14 13:47:06

标签: php date average strtotime

我需要找到一群人的平均出生日期。假设有5个人的出生日期为5/14/2014,5个人的出生日期为5/16/2014。平均值是5/15/2014。我需要一种方法将它放入函数中。

该功能需要能够处理2014年5月14日出生的10个人以及2014年5月18日出生的50个人。这显然平均在2014年5月17日左右。

我想我可以做这样的事情。

//date1 and date2 are the dates given
//total1 and total2 are the number of people for each date 
$time1 = strtotime($date1);
$time2 = strtotime($date2);
$total = ($time1 * $total1) + ($time2 * $total2);
$avg = $total / ($total1 + $total2);
$final = date("Y-m-d",$avg);

1 个答案:

答案 0 :(得分:2)

只需截取日期,将它们转换为时间戳,将它们相加,除以生日数,然后打印出最终时间戳的日期。

$birthdays = array('2014-05-14','2014-05-15','2014-05-16','2014-05-17','2014-05-18');
$total_timstamp = 0;
foreach ($birthdays as $birthday) {
    $total_timstamp = bcadd($total_timstamp, (new DateTime($birthday))->format('U'));
}
$average_timestamp = bcdiv($total_timstamp, count($birthdays));
echo date('Y-m-d', $average_timestamp);

Demo

这也适用于MM/DD/YYYY格式的日期。