- ini_set: documentation ( source)
- date_default_timezone_get: documentation ( source)
<?php
ini_set('date.timezone', 'UTC');
$defaultTZ = new \DateTimeZone(date_default_timezone_get());
$event_start = '2019-01-01 09:00';
$est_date = new \DateTimeImmutable($event_start, new \DateTimeZone('America/New_York'));
$utc_date = $est_date->setTimeZone($defaultTZ);
$db_event_start = $utc_date->format(DATE_ISO8601);
//retireve event from database
$event_date = new \DateTimeImmutable($db_event_start, $defaultTZ);
$pst_date = $event_date->setTimeZone(new \DateTimeZone('America/Los_Angeles'));
$est_date = $event_date->setTimeZone(new \DateTimeZone('America/New_York'));
//display event start times to the user
echo 'Event Starts at:' . PHP_EOL;
echo $event_date->format('Y-m-d H:i T') . PHP_EOL;
echo $pst_date->format('Y-m-d H:i T') . PHP_EOL;
echo $est_date->format('Y-m-d H:i T') . PHP_EOL;
//display event status
echo 'Event ' . ($event_date <= new \DateTime('now', $defaultTZ) ? 'Has' : 'Not') . ' Started';