phpnuxbill/system/autoload/Timezone.php

50 lines
1.7 KiB
PHP
Raw Normal View History

2017-03-11 03:51:06 +08:00
<?php
/**
2023-10-12 16:55:42 +08:00
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
* by https://t.me/ibnux
**/
2017-03-11 03:51:06 +08:00
class Timezone {
public static function timezoneList()
{
$timezoneIdentifiers = DateTimeZone::listIdentifiers();
$utcTime = new DateTime('now', new DateTimeZone('UTC'));
$tempTimezones = array();
foreach ($timezoneIdentifiers as $timezoneIdentifier) {
$currentTimezone = new DateTimeZone($timezoneIdentifier);
$tempTimezones[] = array(
'offset' => (int)$currentTimezone->getOffset($utcTime),
'identifier' => $timezoneIdentifier
);
}
// Sort the array by offset,identifier ascending
usort($tempTimezones, function($a, $b) {
return ($a['offset'] == $b['offset'])
? strcmp($a['identifier'], $b['identifier'])
: $a['offset'] - $b['offset'];
});
$timezoneList = array();
foreach ($tempTimezones as $tz) {
$sign = ($tz['offset'] > 0) ? '+' : '-';
$offset = gmdate('H:i', abs($tz['offset']));
$timezoneList[$tz['identifier']] = '(UTC ' . $sign . $offset . ') ' .
$tz['identifier'];
}
return $timezoneList;
}
public static function getTimeOffset($tz = 'Asia/Jakarta'){
$utcTime = new DateTime('now', new DateTimeZone('UTC'));
$currentTimezone = new DateTimeZone($tz);
$offset = $currentTimezone->getOffset($utcTime);
$sign = ($offset > 0) ? '+' : '-';
$offset = gmdate('H:i', abs($offset));
return $sign.$offset;
}
2017-03-11 03:51:06 +08:00
}