Blame | Last modification | View Log | RSS feed
<?php
// +----------------------------------------------------------------------+
// | PEAR :: I18Nv2 :: Timezone |
// +----------------------------------------------------------------------+
// | This source file is subject to version 3.0 of the PHP license, |
// | that is available at http://www.php.net/license/3_0.txt |
// | If you did not receive a copy of the PHP license and are unable |
// | to obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Copyright (c) 2004 Michael Wallner <mike@iworks.at> |
// +----------------------------------------------------------------------+
//
// $Id: Timezone.php,v 1.1 2007-06-25 09:55:28 alexandre_tb Exp $
/**
* I18Nv2::Timezone
*
* @package I18Nv2
* @category Internationalization
*/
/**
* I18Nv2_Timezone
*
* Map of country codes to time zone names.
*
* Note that:
* AX is not in country list
* CS is not in country list
* BV (Bouvet Island) is not in time zones list
* HM (Heard Island And Mcdonald Islands) is not in time zones list
* SP (Serbia) is not in time zones list
* YU (Serbia And Montenegro) is not in time zones list
*
* @author Michael Wallner <mike@php.net>
* @version $Revision: 1.1 $
* @package I18Nv2
* @access public
* @static
*/
class I18Nv2_Timezone
{
/**
* For Country
*
* @static
* @access public
* @return array time zones applicable for the country
* @param string $country ISO country code
*/
function forCountry($country)
{
$country = strToUpper($country);
return isset($GLOBALS['_I18Nv2_Timezones'][$country]) ?
$GLOBALS['_I18Nv2_Timezones'][$country] : array();
}
/**
* For Continent
*
* @static
* @access public
* @return array time zones applicable for the "continent"
* @param string $continent Europe|America|Africa|Asia|Pacific|Australia|
* Indian|Atlantic|Antartica
*/
function forContinent($continent)
{
$continent = ucFirst(strToLower($continent));
if (!count($GLOBALS['_I18Nv2_Continental_Timezones'])) {
foreach (I18Nv2_Timezone::getAll(true) as $tz) {
$cn = current($a = explode('/', $tz, 2));
$GLOBALS['_I18Nv2_Continental_Timeszones'][$cn][] = $tz;
}
}
return isset($GLOBALS['_I18Nv2_Continental_Timeszones'][$continent]) ?
$GLOBALS['_I18Nv2_Continental_Timeszones'][$continent] : array();
}
/**
* Exists
*
* @static
* @access public
* @return bool
* @param string $timezone
*/
function exists($timezone)
{
return in_array($timezone, I18Nv2_Timezone::getAll(true));
}
/**
* Get All
*
* @static
* @access public
* @return array
* @param bool $merged
*/
function getAll($merged = false)
{
if ($merged) {
if (!count($GLOBALS['_I18Nv2_Merged_Timezones'])) {
$GLOBALS['_I18Nv2_Merged_Timezones'] = call_user_func_array(
'array_merge', $GLOBALS['_I18Nv2_Timezones']);
}
return $GLOBALS['_I18Nv2_Merged_Timezones'];
}
return $GLOBALS['_I18Nv2_Timezones'];
}
}
$GLOBALS['_I18Nv2_Continental_Timezones'] = array();
$GLOBALS['_I18Nv2_Merged_Timezones'] = array();
$GLOBALS['_I18Nv2_Timezones'] = array(
'AD' => array(
'Europe/Andorra',
),
'AE' => array(
'Asia/Dubai',
),
'AF' => array(
'Asia/Kabul',
),
'AG' => array(
'America/Antigua',
),
'AI' => array(
'America/Anguilla',
),
'AL' => array(
'Europe/Tirane',
),
'AM' => array(
'Asia/Yerevan',
),
'AN' => array(
'America/Curacao',
),
'AO' => array(
'Africa/Luanda',
),
'AQ' => array(
'Antarctica/McMurdo',
'Antarctica/South_Pole',
'Antarctica/Rothera',
'Antarctica/Palmer',
'Antarctica/Mawson',
'Antarctica/Davis',
'Antarctica/Casey',
'Antarctica/Vostok',
'Antarctica/DumontDUrville',
'Antarctica/Syowa',
),
'AR' => array(
'America/Argentina/Buenos_Aires',
'America/Argentina/Cordoba',
'America/Argentina/Jujuy',
'America/Argentina/Tucuman',
'America/Argentina/Catamarca',
'America/Argentina/La_Rioja',
'America/Argentina/San_Juan',
'America/Argentina/Mendoza',
'America/Argentina/ComodRivadavia',
'America/Argentina/Rio_Gallegos',
'America/Argentina/Ushuaia',
),
'AS' => array(
'Pacific/Pago_Pago',
),
'AT' => array(
'Europe/Vienna',
),
'AU' => array(
'Australia/Lord_Howe',
'Australia/Hobart',
'Australia/Melbourne',
'Australia/Sydney',
'Australia/Broken_Hill',
'Australia/Brisbane',
'Australia/Lindeman',
'Australia/Adelaide',
'Australia/Darwin',
'Australia/Perth',
),
'AW' => array(
'America/Aruba',
),
'AX' => array(
'Europe/Mariehamn',
),
'AZ' => array(
'Asia/Baku',
),
'BA' => array(
'Europe/Sarajevo',
),
'BB' => array(
'America/Barbados',
),
'BD' => array(
'Asia/Dhaka',
),
'BE' => array(
'Europe/Brussels',
),
'BF' => array(
'Africa/Ouagadougou',
),
'BG' => array(
'Europe/Sofia',
),
'BH' => array(
'Asia/Bahrain',
),
'BI' => array(
'Africa/Bujumbura',
),
'BJ' => array(
'Africa/Porto-Novo',
),
'BM' => array(
'Atlantic/Bermuda',
),
'BN' => array(
'Asia/Brunei',
),
'BO' => array(
'America/La_Paz',
),
'BR' => array(
'America/Noronha',
'America/Belem',
'America/Fortaleza',
'America/Recife',
'America/Araguaina',
'America/Maceio',
'America/Bahia',
'America/Sao_Paulo',
'America/Campo_Grande',
'America/Cuiaba',
'America/Porto_Velho',
'America/Boa_Vista',
'America/Manaus',
'America/Eirunepe',
'America/Rio_Branco',
),
'BS' => array(
'America/Nassau',
),
'BT' => array(
'Asia/Thimphu',
),
'BW' => array(
'Africa/Gaborone',
),
'BY' => array(
'Europe/Minsk',
),
'BZ' => array(
'America/Belize',
),
'CA' => array(
'America/St_Johns',
'America/Halifax',
'America/Glace_Bay',
'America/Goose_Bay',
'America/Montreal',
'America/Toronto',
'America/Nipigon',
'America/Thunder_Bay',
'America/Pangnirtung',
'America/Iqaluit',
'America/Rankin_Inlet',
'America/Winnipeg',
'America/Rainy_River',
'America/Cambridge_Bay',
'America/Regina',
'America/Swift_Current',
'America/Edmonton',
'America/Yellowknife',
'America/Inuvik',
'America/Dawson_Creek',
'America/Vancouver',
'America/Whitehorse',
'America/Dawson',
),
'CC' => array(
'Indian/Cocos',
),
'CD' => array(
'Africa/Kinshasa',
'Africa/Lubumbashi',
),
'CF' => array(
'Africa/Bangui',
),
'CG' => array(
'Africa/Brazzaville',
),
'CH' => array(
'Europe/Zurich',
),
'CI' => array(
'Africa/Abidjan',
),
'CK' => array(
'Pacific/Rarotonga',
),
'CL' => array(
'America/Santiago',
'Pacific/Easter',
),
'CM' => array(
'Africa/Douala',
),
'CN' => array(
'Asia/Shanghai',
'Asia/Harbin',
'Asia/Chongqing',
'Asia/Urumqi',
'Asia/Kashgar',
),
'CO' => array(
'America/Bogota',
),
'CR' => array(
'America/Costa_Rica',
),
'CS' => array(
'Europe/Belgrade',
),
'CU' => array(
'America/Havana',
),
'CV' => array(
'Atlantic/Cape_Verde',
),
'CX' => array(
'Indian/Christmas',
),
'CY' => array(
'Asia/Nicosia',
),
'CZ' => array(
'Europe/Prague',
),
'DE' => array(
'Europe/Berlin',
),
'DJ' => array(
'Africa/Djibouti',
),
'DK' => array(
'Europe/Copenhagen',
),
'DM' => array(
'America/Dominica',
),
'DO' => array(
'America/Santo_Domingo',
),
'DZ' => array(
'Africa/Algiers',
),
'EC' => array(
'America/Guayaquil',
'Pacific/Galapagos',
),
'EE' => array(
'Europe/Tallinn',
),
'EG' => array(
'Africa/Cairo',
),
'EH' => array(
'Africa/El_Aaiun',
),
'ER' => array(
'Africa/Asmera',
),
'ES' => array(
'Europe/Madrid',
'Africa/Ceuta',
'Atlantic/Canary',
),
'ET' => array(
'Africa/Addis_Ababa',
),
'FI' => array(
'Europe/Helsinki',
),
'FJ' => array(
'Pacific/Fiji',
),
'FK' => array(
'Atlantic/Stanley',
),
'FM' => array(
'Pacific/Yap',
'Pacific/Truk',
'Pacific/Ponape',
'Pacific/Kosrae',
),
'FO' => array(
'Atlantic/Faeroe',
),
'FR' => array(
'Europe/Paris',
),
'GA' => array(
'Africa/Libreville',
),
'GB' => array(
'Europe/London',
'Europe/Belfast',
),
'GD' => array(
'America/Grenada',
),
'GE' => array(
'Asia/Tbilisi',
),
'GF' => array(
'America/Cayenne',
),
'GH' => array(
'Africa/Accra',
),
'GI' => array(
'Europe/Gibraltar',
),
'GL' => array(
'America/Godthab',
'America/Danmarkshavn',
'America/Scoresbysund',
'America/Thule',
),
'GM' => array(
'Africa/Banjul',
),
'GN' => array(
'Africa/Conakry',
),
'GP' => array(
'America/Guadeloupe',
),
'GQ' => array(
'Africa/Malabo',
),
'GR' => array(
'Europe/Athens',
),
'GS' => array(
'Atlantic/South_Georgia',
),
'GT' => array(
'America/Guatemala',
),
'GU' => array(
'Pacific/Guam',
),
'GW' => array(
'Africa/Bissau',
),
'GY' => array(
'America/Guyana',
),
'HK' => array(
'Asia/Hong_Kong',
),
'HN' => array(
'America/Tegucigalpa',
),
'HR' => array(
'Europe/Zagreb',
),
'HT' => array(
'America/Port-au-Prince',
),
'HU' => array(
'Europe/Budapest',
),
'ID' => array(
'Asia/Jakarta',
'Asia/Pontianak',
'Asia/Makassar',
'Asia/Jayapura',
),
'IE' => array(
'Europe/Dublin',
),
'IL' => array(
'Asia/Jerusalem',
),
'IN' => array(
'Asia/Calcutta',
),
'IO' => array(
'Indian/Chagos',
),
'IQ' => array(
'Asia/Baghdad',
),
'IR' => array(
'Asia/Tehran',
),
'IS' => array(
'Atlantic/Reykjavik',
),
'IT' => array(
'Europe/Rome',
),
'JM' => array(
'America/Jamaica',
),
'JO' => array(
'Asia/Amman',
),
'JP' => array(
'Asia/Tokyo',
),
'KE' => array(
'Africa/Nairobi',
),
'KG' => array(
'Asia/Bishkek',
),
'KH' => array(
'Asia/Phnom_Penh',
),
'KI' => array(
'Pacific/Tarawa',
'Pacific/Enderbury',
'Pacific/Kiritimati',
),
'KM' => array(
'Indian/Comoro',
),
'KN' => array(
'America/St_Kitts',
),
'KP' => array(
'Asia/Pyongyang',
),
'KR' => array(
'Asia/Seoul',
),
'KW' => array(
'Asia/Kuwait',
),
'KY' => array(
'America/Cayman',
),
'KZ' => array(
'Asia/Almaty',
'Asia/Qyzylorda',
'Asia/Aqtobe',
'Asia/Aqtau',
'Asia/Oral',
),
'LA' => array(
'Asia/Vientiane',
),
'LB' => array(
'Asia/Beirut',
),
'LC' => array(
'America/St_Lucia',
),
'LI' => array(
'Europe/Vaduz',
),
'LK' => array(
'Asia/Colombo',
),
'LR' => array(
'Africa/Monrovia',
),
'LS' => array(
'Africa/Maseru',
),
'LT' => array(
'Europe/Vilnius',
),
'LU' => array(
'Europe/Luxembourg',
),
'LV' => array(
'Europe/Riga',
),
'LY' => array(
'Africa/Tripoli',
),
'MA' => array(
'Africa/Casablanca',
),
'MC' => array(
'Europe/Monaco',
),
'MD' => array(
'Europe/Chisinau',
),
'MG' => array(
'Indian/Antananarivo',
),
'MH' => array(
'Pacific/Majuro',
'Pacific/Kwajalein',
),
'MK' => array(
'Europe/Skopje',
),
'ML' => array(
'Africa/Bamako',
'Africa/Timbuktu',
),
'MM' => array(
'Asia/Rangoon',
),
'MN' => array(
'Asia/Ulaanbaatar',
'Asia/Hovd',
'Asia/Choibalsan',
),
'MO' => array(
'Asia/Macau',
),
'MP' => array(
'Pacific/Saipan',
),
'MQ' => array(
'America/Martinique',
),
'MR' => array(
'Africa/Nouakchott',
),
'MS' => array(
'America/Montserrat',
),
'MT' => array(
'Europe/Malta',
),
'MU' => array(
'Indian/Mauritius',
),
'MV' => array(
'Indian/Maldives',
),
'MW' => array(
'Africa/Blantyre',
),
'MX' => array(
'America/Mexico_City',
'America/Cancun',
'America/Merida',
'America/Monterrey',
'America/Mazatlan',
'America/Chihuahua',
'America/Hermosillo',
'America/Tijuana',
),
'MY' => array(
'Asia/Kuala_Lumpur',
'Asia/Kuching',
),
'MZ' => array(
'Africa/Maputo',
),
'NA' => array(
'Africa/Windhoek',
),
'NC' => array(
'Pacific/Noumea',
),
'NE' => array(
'Africa/Niamey',
),
'NF' => array(
'Pacific/Norfolk',
),
'NG' => array(
'Africa/Lagos',
),
'NI' => array(
'America/Managua',
),
'NL' => array(
'Europe/Amsterdam',
),
'NO' => array(
'Europe/Oslo',
),
'NP' => array(
'Asia/Katmandu',
),
'NR' => array(
'Pacific/Nauru',
),
'NU' => array(
'Pacific/Niue',
),
'NZ' => array(
'Pacific/Auckland',
'Pacific/Chatham',
),
'OM' => array(
'Asia/Muscat',
),
'PA' => array(
'America/Panama',
),
'PE' => array(
'America/Lima',
),
'PF' => array(
'Pacific/Tahiti',
'Pacific/Marquesas',
'Pacific/Gambier',
),
'PG' => array(
'Pacific/Port_Moresby',
),
'PH' => array(
'Asia/Manila',
),
'PK' => array(
'Asia/Karachi',
),
'PL' => array(
'Europe/Warsaw',
),
'PM' => array(
'America/Miquelon',
),
'PN' => array(
'Pacific/Pitcairn',
),
'PR' => array(
'America/Puerto_Rico',
),
'PS' => array(
'Asia/Gaza',
),
'PT' => array(
'Europe/Lisbon',
'Atlantic/Madeira',
'Atlantic/Azores',
),
'PW' => array(
'Pacific/Palau',
),
'PY' => array(
'America/Asuncion',
),
'QA' => array(
'Asia/Qatar',
),
'RE' => array(
'Indian/Reunion',
),
'RO' => array(
'Europe/Bucharest',
),
'RU' => array(
'Europe/Kaliningrad',
'Europe/Moscow',
'Europe/Samara',
'Asia/Yekaterinburg',
'Asia/Omsk',
'Asia/Novosibirsk',
'Asia/Krasnoyarsk',
'Asia/Irkutsk',
'Asia/Yakutsk',
'Asia/Vladivostok',
'Asia/Sakhalin',
'Asia/Magadan',
'Asia/Kamchatka',
'Asia/Anadyr',
),
'RW' => array(
'Africa/Kigali',
),
'SA' => array(
'Asia/Riyadh',
),
'SB' => array(
'Pacific/Guadalcanal',
),
'SC' => array(
'Indian/Mahe',
),
'SD' => array(
'Africa/Khartoum',
),
'SE' => array(
'Europe/Stockholm',
),
'SG' => array(
'Asia/Singapore',
),
'SH' => array(
'Atlantic/St_Helena',
),
'SI' => array(
'Europe/Ljubljana',
),
'SJ' => array(
'Arctic/Longyearbyen',
'Atlantic/Jan_Mayen',
),
'SK' => array(
'Europe/Bratislava',
),
'SL' => array(
'Africa/Freetown',
),
'SM' => array(
'Europe/San_Marino',
),
'SN' => array(
'Africa/Dakar',
),
'SO' => array(
'Africa/Mogadishu',
),
'SR' => array(
'America/Paramaribo',
),
'ST' => array(
'Africa/Sao_Tome',
),
'SV' => array(
'America/El_Salvador',
),
'SY' => array(
'Asia/Damascus',
),
'SZ' => array(
'Africa/Mbabane',
),
'TC' => array(
'America/Grand_Turk',
),
'TD' => array(
'Africa/Ndjamena',
),
'TF' => array(
'Indian/Kerguelen',
),
'TG' => array(
'Africa/Lome',
),
'TH' => array(
'Asia/Bangkok',
),
'TJ' => array(
'Asia/Dushanbe',
),
'TK' => array(
'Pacific/Fakaofo',
),
'TL' => array(
'Asia/Dili',
),
'TM' => array(
'Asia/Ashgabat',
),
'TN' => array(
'Africa/Tunis',
),
'TO' => array(
'Pacific/Tongatapu',
),
'TR' => array(
'Europe/Istanbul',
),
'TT' => array(
'America/Port_of_Spain',
),
'TV' => array(
'Pacific/Funafuti',
),
'TW' => array(
'Asia/Taipei',
),
'TZ' => array(
'Africa/Dar_es_Salaam',
),
'UA' => array(
'Europe/Kiev',
'Europe/Uzhgorod',
'Europe/Zaporozhye',
'Europe/Simferopol',
),
'UG' => array(
'Africa/Kampala',
),
'UM' => array(
'Pacific/Johnston',
'Pacific/Midway',
'Pacific/Wake',
),
'US' => array(
'America/New_York',
'America/Detroit',
'America/Louisville',
'America/Kentucky/Monticello',
'America/Indianapolis',
'America/Indiana/Marengo',
'America/Indiana/Knox',
'America/Indiana/Vevay',
'America/Chicago',
'America/Menominee',
'America/North_Dakota/Center',
'America/Denver',
'America/Boise',
'America/Shiprock',
'America/Phoenix',
'America/Los_Angeles',
'America/Anchorage',
'America/Juneau',
'America/Yakutat',
'America/Nome',
'America/Adak',
'Pacific/Honolulu',
),
'UY' => array(
'America/Montevideo',
),
'UZ' => array(
'Asia/Samarkand',
'Asia/Tashkent',
),
'VA' => array(
'Europe/Vatican',
),
'VC' => array(
'America/St_Vincent',
),
'VE' => array(
'America/Caracas',
),
'VG' => array(
'America/Tortola',
),
'VI' => array(
'America/St_Thomas',
),
'VN' => array(
'Asia/Saigon',
),
'VU' => array(
'Pacific/Efate',
),
'WF' => array(
'Pacific/Wallis',
),
'WS' => array(
'Pacific/Apia',
),
'YE' => array(
'Asia/Aden',
),
'YT' => array(
'Indian/Mayotte',
),
'ZA' => array(
'Africa/Johannesburg',
),
'ZM' => array(
'Africa/Lusaka',
),
'ZW' => array(
'Africa/Harare',
),
);
?>