使用PHP从日期数组中获取平均持续时间

时间:2019-04-16 10:09:41

标签: php arrays date

我正在尝试根据所有订单日期获取客户的平均订单持续时间。

数组具有这样的订购日期列表

$all_order_dates = [
'0'=>'2019-01-01',
'1'=>'2019-01-05',
'2'=>'2019-01-25',
'3'=>'2019-02-03',
'4'=>'2019-03-10',
'5'=>'2019-04-20', .... So on..
]

如何获取以天为单位的平均订单持续时间。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样

$count = $total = 0;
//////////////////////////////////////////////////////////////////////
//PARA: Date Should In YYYY-MM-DD Format
//RESULT FORMAT:
// '%y Year %m Month %d Day %h Hours %i Minute %s Seconds'        =>  1 Year 3 Month 14 Day 11 Hours 49 Minute 36 Seconds
// '%y Year %m Month %d Day'                                      =>  1 Year 3 Month 14 Days
// '%m Month %d Day'                                              =>  3 Month 14 Day
// '%d Day %h Hours'                                              =>  14 Day 11 Hours
// '%d Day'                                                       =>  14 Days
// '%h Hours %i Minute %s Seconds'                                =>  11 Hours 49 Minute 36 Seconds
// '%i Minute %s Seconds'                                         =>  49 Minute 36 Seconds
// '%h Hours                                                      =>  11 Hours
// '%a Days                                                       =>  468 Days
//////////////////////////////////////////////////////////////////////
function dateDifference($date_1, $date_2, $differenceFormat = '%a')
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);

    $interval = date_diff($datetime1, $datetime2);

    return $interval->format($differenceFormat);

}
foreach ($all_order_dates as $key => $val) {
    if ($key < count($all_order_dates) - 1) {
        $diff = dateDifference(($all_order_dates[$key]), ($all_order_dates[$key + 1]));
        $total += $diff;
        $count++;
    }

}
echo "Average order days is", $total / $count;

Link用于参考功能。

Demo