filter('AddSegmentByLabelInUTC', array($idSite = 'UTC+1', $period = 'day', $date = 'today'); */ class AddSegmentByLabelInUTC extends DataTable\Filter\AddSegmentValue { private $timezone; private $date; /** * @param DataTable $table * @param int $timezone The timezone of the current selected site / the timezone of the labels * @param string $period The requested period and date is needed to respect daylight saving etc. * @param string $date */ public function __construct($table, $timezone, $period, $date) { $this->timezone = $timezone; $this->date = Period\Factory::build($period, $date)->getDateEnd(); $self = $this; parent::__construct($table, function ($label) use ($self) { $hour = str_pad($label, 2, 0, STR_PAD_LEFT); return $self->convertHourToUtc($hour); }); } public function convertHourToUTC($hour) { $dateWithHour = $this->date->setTime($hour . ':00:00'); $dateInTimezone = $dateWithHour->setTimezone($this->timezone); $hourInUTC = $dateInTimezone->getHourUTC(); return $hourInUTC; } }