我正在尝试根据所有订单日期获取客户的平均订单持续时间。
数组具有这样的订购日期列表
$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..
]
如何获取以天为单位的平均订单持续时间。
答案 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。