/** * @param int $iDefaultTimeZone * @param string $sClientTimeZone = '' * @return string */ public static function GetStrTimeZone($iDefaultTimeZone, $sClientTimeZone = '') { if ('' !== $sClientTimeZone) { return $sClientTimeZone; } if (null !== self::$sTimeZone) { return self::$sTimeZone; } $sResult = 'Etc/GMT'; $aTimeZones = array('Default', 'Pacific/Kwajalein', 'Pacific/Midway', 'US/Hawaii', 'US/Alaska', 'America/Tijuana', 'America/Dawson_Creek', 'America/Denver', 'America/Belize', 'America/Chicago', 'America/Cancun', 'America/Belize', 'America/Havana', 'America/New_York', 'America/Bogota', 'America/Santiago', 'America/Caracas', 'America/Glace_Bay', 'America/St_Johns', 'America/Godthab', 'America/Argentina/Buenos_Aires', 'America/Sao_Paulo', 'America/Noronha', 'Atlantic/Cape_Verde', 'Atlantic/Azores', 'Africa/Abidjan', 'Europe/Dublin', 'Europe/Amsterdam', 'Europe/Belgrade', 'Europe/Brussels', 'Europe/Sarajevo', 'Africa/Algiers', 'Europe/Minsk', 'Europe/Bucharest', 'Africa/Cairo', 'Africa/Blantyre', 'Africa/Harare', 'Asia/Jerusalem', 'Asia/Baghdad', 'Asia/Kuwait', 'Africa/Addis_Ababa', 'Europe/Moscow', 'Asia/Tehran', 'Asia/Dubai', 'Asia/Yerevan', 'Asia/Kabul', 'Asia/Tashkent', 'Asia/Kolkata', 'Asia/Katmandu', 'Asia/Yekaterinburg', 'Asia/Almaty', 'Asia/Dhaka', 'Asia/Colombo', 'Asia/Rangoon', 'Asia/Bangkok', 'Asia/Krasnoyarsk', 'Asia/Hong_Kong', 'Asia/Irkutsk', 'Asia/Kuala_Lumpur', 'Australia/Perth', 'Asia/Taipei', 'Asia/Tokyo', 'Asia/Seoul', 'Australia/Adelaide', 'Australia/Darwin', 'Asia/Yakutsk', 'Australia/Brisbane', 'Australia/Canberra', 'Pacific/Guam', 'Australia/Hobart', 'Asia/Vladivostok', 'Pacific/Noumea', 'Asia/Magadan', 'Asia/Anadyr', 'Pacific/Tongatapu'); $iDefaultTimeZone = isset($aTimeZones[$iDefaultTimeZone]) ? $iDefaultTimeZone : 0; if (0 === $iDefaultTimeZone) { $iOffset = self::GetTimeOffset($iDefaultTimeZone, $sClientTimeZone) / 60 * -1; $sSign = $iOffset < 0 ? '-' : '+'; $sResult = 'Etc/GMT' . $sSign . abs($iOffset); } else { $sResult = $aTimeZones[$iDefaultTimeZone]; } self::$sTimeZone = $sResult; return self::$sTimeZone; }