Spaces:
No application file
No application file
namespace Mautic\CoreBundle\Helper\Chart; | |
trait DateRangeUnitTrait | |
{ | |
/** | |
* Returns appropriate time unit from a date range so the line/bar charts won't be too full/empty. | |
*/ | |
public function getTimeUnitFromDateRange(\DateTimeInterface $dateFrom, \DateTimeInterface $dateTo): string | |
{ | |
$dayDiff = $dateTo->diff($dateFrom)->format('%a'); | |
$unit = 'd'; | |
if ($dayDiff <= 1) { | |
$unit = 'H'; | |
$sameDay = $dateTo->format('d') === $dateFrom->format('d'); | |
$hourDiff = $dateTo->diff($dateFrom)->format('%h'); | |
$minuteDiff = $dateTo->diff($dateFrom)->format('%i'); | |
if ($sameDay && !intval($hourDiff) && intval($minuteDiff)) { | |
$unit = 'i'; | |
} | |
$secondDiff = $dateTo->diff($dateFrom)->format('%s'); | |
if (!intval($minuteDiff) && intval($secondDiff)) { | |
$unit = 'i'; | |
} | |
} | |
if ($dayDiff > 31) { | |
$unit = 'W'; | |
} | |
if ($dayDiff > 100) { | |
$unit = 'm'; | |
} | |
if ($dayDiff > 1000) { | |
$unit = 'Y'; | |
} | |
return $unit; | |
} | |
} | |