- abs: documentation ( source)
- sprintf: documentation ( source)
- printf: documentation ( source)
<?php
/**
* @link http://stackoverflow.com/questions/26453510/datetimezone-and-utc-offset-for-standard-and-daylight-times
*/
/**
* @param $seconds
*
* @return string +\d\d\d\d / -\d\d\d\d
*/
function format_offset($seconds) {
$minutes = (int) ($seconds / 60);
$hours = (int) ($minutes / 60);
$leftover = abs($minutes - $hours * 60);
return sprintf("%+03d%02d", $hours, $leftover);
}
$zones = array('ET', 'EDT', 'EST');
foreach ($zones as $zone) {
// get offset
$timezone = new DateTimeZone($zone);
$offset = $timezone->getOffset(new DateTime(null, $timezone));
printf("%s (%s) %s\n", $zone, $timezone->getName(), format_offset($offset));
}