2 // +----------------------------------------------------------------------+
3 // | PEAR :: I18Nv2 :: Timezone |
4 // +----------------------------------------------------------------------+
5 // | This source file is subject to version 3.0 of the PHP license, |
6 // | that is available at http://www.php.net/license/3_0.txt |
7 // | If you did not receive a copy of the PHP license and are unable |
8 // | to obtain it through the world-wide-web, please send a note to |
9 // | license@php.net so we can mail you a copy immediately. |
10 // +----------------------------------------------------------------------+
11 // | Copyright (c) 2004 Michael Wallner <mike@iworks.at> |
12 // +----------------------------------------------------------------------+
14 // $Id: Timezone.php,v 1.2 2005/11/28 15:33:22 mike Exp $
20 * @category Internationalization
26 * Map of country codes to time zone names.
29 * AX is not in country list
30 * CS is not in country list
31 * BV (Bouvet Island) is not in time zones list
32 * HM (Heard Island And Mcdonald Islands) is not in time zones list
33 * SP (Serbia) is not in time zones list
34 * YU (Serbia And Montenegro) is not in time zones list
36 * @author Michael Wallner <mike@php.net>
37 * @version $Revision: 1.2 $
49 * @return array time zones applicable for the country
50 * @param string $country ISO country code
52 function forCountry($country)
54 $country = strToUpper($country);
55 return isset($GLOBALS['_I18Nv2_Timezones'][$country]) ?
56 $GLOBALS['_I18Nv2_Timezones'][$country] : array();
64 * @return array time zones applicable for the "continent"
65 * @param string $continent Europe|America|Africa|Asia|Pacific|Australia|
66 * Indian|Atlantic|Antartica
68 function forContinent($continent)
70 $continent = ucFirst(strToLower($continent));
72 if (!count($GLOBALS['_I18Nv2_Continental_Timezones'])) {
73 foreach (I18Nv2_Timezone::getAll(true) as $tz) {
74 $cn = current($a = explode('/', $tz, 2));
75 $GLOBALS['_I18Nv2_Continental_Timeszones'][$cn][] = $tz;
79 return isset($GLOBALS['_I18Nv2_Continental_Timeszones'][$continent]) ?
80 $GLOBALS['_I18Nv2_Continental_Timeszones'][$continent] : array();
89 * @param string $timezone
91 function exists($timezone)
93 return in_array($timezone, I18Nv2_Timezone::getAll(true));
102 * @param bool $merged
104 function getAll($merged = false)
107 if (!count($GLOBALS['_I18Nv2_Merged_Timezones'])) {
108 $GLOBALS['_I18Nv2_Merged_Timezones'] = call_user_func_array(
109 'array_merge', $GLOBALS['_I18Nv2_Timezones']);
111 return $GLOBALS['_I18Nv2_Merged_Timezones'];
113 return $GLOBALS['_I18Nv2_Timezones'];
118 $GLOBALS['_I18Nv2_Continental_Timezones'] = array();
119 $GLOBALS['_I18Nv2_Merged_Timezones'] = array();
120 $GLOBALS['_I18Nv2_Timezones'] = array(
149 'Antarctica/McMurdo',
150 'Antarctica/South_Pole',
151 'Antarctica/Rothera',
157 'Antarctica/DumontDUrville',
161 'America/Argentina/Buenos_Aires',
162 'America/Argentina/Cordoba',
163 'America/Argentina/Jujuy',
164 'America/Argentina/Tucuman',
165 'America/Argentina/Catamarca',
166 'America/Argentina/La_Rioja',
167 'America/Argentina/San_Juan',
168 'America/Argentina/Mendoza',
169 'America/Argentina/ComodRivadavia',
170 'America/Argentina/Rio_Gallegos',
171 'America/Argentina/Ushuaia',
180 'Australia/Lord_Howe',
182 'Australia/Melbourne',
184 'Australia/Broken_Hill',
185 'Australia/Brisbane',
186 'Australia/Lindeman',
187 'Australia/Adelaide',
213 'Africa/Ouagadougou',
245 'America/Campo_Grande',
247 'America/Porto_Velho',
251 'America/Rio_Branco',
276 'America/Thunder_Bay',
277 'America/Pangnirtung',
279 'America/Rankin_Inlet',
281 'America/Rainy_River',
282 'America/Cambridge_Bay',
284 'America/Swift_Current',
286 'America/Yellowknife',
288 'America/Dawson_Creek',
290 'America/Whitehorse',
304 'Africa/Brazzaville',
333 'America/Costa_Rica',
342 'Atlantic/Cape_Verde',
366 'America/Santo_Domingo',
393 'Africa/Addis_Ababa',
440 'America/Danmarkshavn',
441 'America/Scoresbysund',
451 'America/Guadeloupe',
460 'Atlantic/South_Georgia',
478 'America/Tegucigalpa',
484 'America/Port-au-Prince',
514 'Atlantic/Reykjavik',
540 'Pacific/Kiritimati',
610 'Indian/Antananarivo',
638 'America/Martinique',
644 'America/Montserrat',
659 'America/Mexico_City',
665 'America/Hermosillo',
727 'Pacific/Port_Moresby',
745 'America/Puerto_Rico',
771 'Europe/Kaliningrad',
774 'Asia/Yekaterinburg',
793 'Pacific/Guadalcanal',
808 'Atlantic/St_Helena',
814 'Arctic/Longyearbyen',
815 'Atlantic/Jan_Mayen',
833 'America/Paramaribo',
839 'America/El_Salvador',
848 'America/Grand_Turk',
884 'America/Port_of_Spain',
893 'Africa/Dar_es_Salaam',
912 'America/Louisville',
913 'America/Kentucky/Monticello',
914 'America/Indianapolis',
915 'America/Indiana/Marengo',
916 'America/Indiana/Knox',
917 'America/Indiana/Vevay',
920 'America/North_Dakota/Center',
925 'America/Los_Angeles',
934 'America/Montevideo',
944 'America/St_Vincent',
974 'Africa/Johannesburg',