fix image text
[pear] / I18Nv2 / Timezone.php
1 <?php
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 // +----------------------------------------------------------------------+
13 //
14 // $Id: Timezone.php,v 1.2 2005/11/28 15:33:22 mike Exp $
15
16 /**
17  * I18Nv2::Timezone
18  * 
19  * @package     I18Nv2
20  * @category    Internationalization
21  */
22
23 /**
24  * I18Nv2_Timezone
25  *
26  * Map of country codes to time zone names.
27  * 
28  * Note that:
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
35  * 
36  * @author      Michael Wallner <mike@php.net>
37  * @version     $Revision: 1.2 $
38  * @package     I18Nv2
39  * @access      public
40  * @static
41  */
42 class I18Nv2_Timezone
43 {
44     /**
45      * For Country
46      * 
47      * @static
48      * @access  public
49      * @return  array   time zones applicable for the country
50      * @param   string  $country ISO country code
51      */
52     function forCountry($country)
53     {
54         $country = strToUpper($country);
55         return isset($GLOBALS['_I18Nv2_Timezones'][$country]) ?
56             $GLOBALS['_I18Nv2_Timezones'][$country] : array();
57     }
58     
59     /**
60      * For Continent
61      * 
62      * @static
63      * @access  public
64      * @return  array   time zones applicable for the "continent"
65      * @param   string  $continent  Europe|America|Africa|Asia|Pacific|Australia|
66      *                              Indian|Atlantic|Antartica
67      */
68     function forContinent($continent)
69     {
70         $continent = ucFirst(strToLower($continent));
71         
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;
76             }
77         }
78         
79         return isset($GLOBALS['_I18Nv2_Continental_Timeszones'][$continent]) ?
80             $GLOBALS['_I18Nv2_Continental_Timeszones'][$continent] : array();
81     }
82     
83     /**
84      * Exists
85      * 
86      * @static
87      * @access  public
88      * @return  bool
89      * @param   string  $timezone
90      */
91     function exists($timezone)
92     {
93         return in_array($timezone, I18Nv2_Timezone::getAll(true));
94     }
95     
96     /**
97      * Get All
98      * 
99      * @static
100      * @access  public
101      * @return  array
102      * @param   bool    $merged
103      */
104     function getAll($merged = false)
105     {
106         if ($merged) {
107             if (!count($GLOBALS['_I18Nv2_Merged_Timezones'])) {
108                 $GLOBALS['_I18Nv2_Merged_Timezones'] = call_user_func_array(
109                     'array_merge', $GLOBALS['_I18Nv2_Timezones']);
110             }
111             return $GLOBALS['_I18Nv2_Merged_Timezones'];
112         }
113         return $GLOBALS['_I18Nv2_Timezones'];
114     }
115     
116 }
117
118 $GLOBALS['_I18Nv2_Continental_Timezones'] = array();
119 $GLOBALS['_I18Nv2_Merged_Timezones'] = array();
120 $GLOBALS['_I18Nv2_Timezones'] = array(
121     'AD' => array(
122         'Europe/Andorra',
123     ),
124     'AE' => array(
125         'Asia/Dubai',
126     ),
127     'AF' => array(
128         'Asia/Kabul',
129     ),
130     'AG' => array(
131         'America/Antigua',
132     ),
133     'AI' => array(
134         'America/Anguilla',
135     ),
136     'AL' => array(
137         'Europe/Tirane',
138     ),
139     'AM' => array(
140         'Asia/Yerevan',
141     ),
142     'AN' => array(
143         'America/Curacao',
144     ),
145     'AO' => array(
146         'Africa/Luanda',
147     ),
148     'AQ' => array(
149         'Antarctica/McMurdo',
150         'Antarctica/South_Pole',
151         'Antarctica/Rothera',
152         'Antarctica/Palmer',
153         'Antarctica/Mawson',
154         'Antarctica/Davis',
155         'Antarctica/Casey',
156         'Antarctica/Vostok',
157         'Antarctica/DumontDUrville',
158         'Antarctica/Syowa',
159     ),
160     'AR' => array(
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',
172     ),
173     'AS' => array(
174         'Pacific/Pago_Pago',
175     ),
176     'AT' => array(
177         'Europe/Vienna',
178     ),
179     'AU' => array(
180         'Australia/Lord_Howe',
181         'Australia/Hobart',
182         'Australia/Melbourne',
183         'Australia/Sydney',
184         'Australia/Broken_Hill',
185         'Australia/Brisbane',
186         'Australia/Lindeman',
187         'Australia/Adelaide',
188         'Australia/Darwin',
189         'Australia/Perth',
190     ),
191     'AW' => array(
192         'America/Aruba',
193     ),
194     'AX' => array(
195         'Europe/Mariehamn',
196     ),
197     'AZ' => array(
198         'Asia/Baku',
199     ),
200     'BA' => array(
201         'Europe/Sarajevo',
202     ),
203     'BB' => array(
204         'America/Barbados',
205     ),
206     'BD' => array(
207         'Asia/Dhaka',
208     ),
209     'BE' => array(
210         'Europe/Brussels',
211     ),
212     'BF' => array(
213         'Africa/Ouagadougou',
214     ),
215     'BG' => array(
216         'Europe/Sofia',
217     ),
218     'BH' => array(
219         'Asia/Bahrain',
220     ),
221     'BI' => array(
222         'Africa/Bujumbura',
223     ),
224     'BJ' => array(
225         'Africa/Porto-Novo',
226     ),
227     'BM' => array(
228         'Atlantic/Bermuda',
229     ),
230     'BN' => array(
231         'Asia/Brunei',
232     ),
233     'BO' => array(
234         'America/La_Paz',
235     ),
236     'BR' => array(
237         'America/Noronha',
238         'America/Belem',
239         'America/Fortaleza',
240         'America/Recife',
241         'America/Araguaina',
242         'America/Maceio',
243         'America/Bahia',
244         'America/Sao_Paulo',
245         'America/Campo_Grande',
246         'America/Cuiaba',
247         'America/Porto_Velho',
248         'America/Boa_Vista',
249         'America/Manaus',
250         'America/Eirunepe',
251         'America/Rio_Branco',
252     ),
253     'BS' => array(
254         'America/Nassau',
255     ),
256     'BT' => array(
257         'Asia/Thimphu',
258     ),
259     'BW' => array(
260         'Africa/Gaborone',
261     ),
262     'BY' => array(
263         'Europe/Minsk',
264     ),
265     'BZ' => array(
266         'America/Belize',
267     ),
268     'CA' => array(
269         'America/St_Johns',
270         'America/Halifax',
271         'America/Glace_Bay',
272         'America/Goose_Bay',
273         'America/Montreal',
274         'America/Toronto',
275         'America/Nipigon',
276         'America/Thunder_Bay',
277         'America/Pangnirtung',
278         'America/Iqaluit',
279         'America/Rankin_Inlet',
280         'America/Winnipeg',
281         'America/Rainy_River',
282         'America/Cambridge_Bay',
283         'America/Regina',
284         'America/Swift_Current',
285         'America/Edmonton',
286         'America/Yellowknife',
287         'America/Inuvik',
288         'America/Dawson_Creek',
289         'America/Vancouver',
290         'America/Whitehorse',
291         'America/Dawson',
292     ),
293     'CC' => array(
294         'Indian/Cocos',
295     ),
296     'CD' => array(
297         'Africa/Kinshasa',
298         'Africa/Lubumbashi',
299     ),
300     'CF' => array(
301         'Africa/Bangui',
302     ),
303     'CG' => array(
304         'Africa/Brazzaville',
305     ),
306     'CH' => array(
307         'Europe/Zurich',
308     ),
309     'CI' => array(
310         'Africa/Abidjan',
311     ),
312     'CK' => array(
313         'Pacific/Rarotonga',
314     ),
315     'CL' => array(
316         'America/Santiago',
317         'Pacific/Easter',
318     ),
319     'CM' => array(
320         'Africa/Douala',
321     ),
322     'CN' => array(
323         'Asia/Shanghai',
324         'Asia/Harbin',
325         'Asia/Chongqing',
326         'Asia/Urumqi',
327         'Asia/Kashgar',
328     ),
329     'CO' => array(
330         'America/Bogota',
331     ),
332     'CR' => array(
333         'America/Costa_Rica',
334     ),
335     'CS' => array(
336         'Europe/Belgrade',
337     ),
338     'CU' => array(
339         'America/Havana',
340     ),
341     'CV' => array(
342         'Atlantic/Cape_Verde',
343     ),
344     'CX' => array(
345         'Indian/Christmas',
346     ),
347     'CY' => array(
348         'Asia/Nicosia',
349     ),
350     'CZ' => array(
351         'Europe/Prague',
352     ),
353     'DE' => array(
354         'Europe/Berlin',
355     ),
356     'DJ' => array(
357         'Africa/Djibouti',
358     ),
359     'DK' => array(
360         'Europe/Copenhagen',
361     ),
362     'DM' => array(
363         'America/Dominica',
364     ),
365     'DO' => array(
366         'America/Santo_Domingo',
367     ),
368     'DZ' => array(
369         'Africa/Algiers',
370     ),
371     'EC' => array(
372         'America/Guayaquil',
373         'Pacific/Galapagos',
374     ),
375     'EE' => array(
376         'Europe/Tallinn',
377     ),
378     'EG' => array(
379         'Africa/Cairo',
380     ),
381     'EH' => array(
382         'Africa/El_Aaiun',
383     ),
384     'ER' => array(
385         'Africa/Asmera',
386     ),
387     'ES' => array(
388         'Europe/Madrid',
389         'Africa/Ceuta',
390         'Atlantic/Canary',
391     ),
392     'ET' => array(
393         'Africa/Addis_Ababa',
394     ),
395     'FI' => array(
396         'Europe/Helsinki',
397     ),
398     'FJ' => array(
399         'Pacific/Fiji',
400     ),
401     'FK' => array(
402         'Atlantic/Stanley',
403     ),
404     'FM' => array(
405         'Pacific/Yap',
406         'Pacific/Truk',
407         'Pacific/Ponape',
408         'Pacific/Kosrae',
409     ),
410     'FO' => array(
411         'Atlantic/Faeroe',
412     ),
413     'FR' => array(
414         'Europe/Paris',
415     ),
416     'GA' => array(
417         'Africa/Libreville',
418     ),
419     'GB' => array(
420         'Europe/London',
421         'Europe/Belfast',
422     ),
423     'GD' => array(
424         'America/Grenada',
425     ),
426     'GE' => array(
427         'Asia/Tbilisi',
428     ),
429     'GF' => array(
430         'America/Cayenne',
431     ),
432     'GH' => array(
433         'Africa/Accra',
434     ),
435     'GI' => array(
436         'Europe/Gibraltar',
437     ),
438     'GL' => array(
439         'America/Godthab',
440         'America/Danmarkshavn',
441         'America/Scoresbysund',
442         'America/Thule',
443     ),
444     'GM' => array(
445         'Africa/Banjul',
446     ),
447     'GN' => array(
448         'Africa/Conakry',
449     ),
450     'GP' => array(
451         'America/Guadeloupe',
452     ),
453     'GQ' => array(
454         'Africa/Malabo',
455     ),
456     'GR' => array(
457         'Europe/Athens',
458     ),
459     'GS' => array(
460         'Atlantic/South_Georgia',
461     ),
462     'GT' => array(
463         'America/Guatemala',
464     ),
465     'GU' => array(
466         'Pacific/Guam',
467     ),
468     'GW' => array(
469         'Africa/Bissau',
470     ),
471     'GY' => array(
472         'America/Guyana',
473     ),
474     'HK' => array(
475         'Asia/Hong_Kong',
476     ),
477     'HN' => array(
478         'America/Tegucigalpa',
479     ),
480     'HR' => array(
481         'Europe/Zagreb',
482     ),
483     'HT' => array(
484         'America/Port-au-Prince',
485     ),
486     'HU' => array(
487         'Europe/Budapest',
488     ),
489     'ID' => array(
490         'Asia/Jakarta',
491         'Asia/Pontianak',
492         'Asia/Makassar',
493         'Asia/Jayapura',
494     ),
495     'IE' => array(
496         'Europe/Dublin',
497     ),
498     'IL' => array(
499         'Asia/Jerusalem',
500     ),
501     'IN' => array(
502         'Asia/Calcutta',
503     ),
504     'IO' => array(
505         'Indian/Chagos',
506     ),
507     'IQ' => array(
508         'Asia/Baghdad',
509     ),
510     'IR' => array(
511         'Asia/Tehran',
512     ),
513     'IS' => array(
514         'Atlantic/Reykjavik',
515     ),
516     'IT' => array(
517         'Europe/Rome',
518     ),
519     'JM' => array(
520         'America/Jamaica',
521     ),
522     'JO' => array(
523         'Asia/Amman',
524     ),
525     'JP' => array(
526         'Asia/Tokyo',
527     ),
528     'KE' => array(
529         'Africa/Nairobi',
530     ),
531     'KG' => array(
532         'Asia/Bishkek',
533     ),
534     'KH' => array(
535         'Asia/Phnom_Penh',
536     ),
537     'KI' => array(
538         'Pacific/Tarawa',
539         'Pacific/Enderbury',
540         'Pacific/Kiritimati',
541     ),
542     'KM' => array(
543         'Indian/Comoro',
544     ),
545     'KN' => array(
546         'America/St_Kitts',
547     ),
548     'KP' => array(
549         'Asia/Pyongyang',
550     ),
551     'KR' => array(
552         'Asia/Seoul',
553     ),
554     'KW' => array(
555         'Asia/Kuwait',
556     ),
557     'KY' => array(
558         'America/Cayman',
559     ),
560     'KZ' => array(
561         'Asia/Almaty',
562         'Asia/Qyzylorda',
563         'Asia/Aqtobe',
564         'Asia/Aqtau',
565         'Asia/Oral',
566     ),
567     'LA' => array(
568         'Asia/Vientiane',
569     ),
570     'LB' => array(
571         'Asia/Beirut',
572     ),
573     'LC' => array(
574         'America/St_Lucia',
575     ),
576     'LI' => array(
577         'Europe/Vaduz',
578     ),
579     'LK' => array(
580         'Asia/Colombo',
581     ),
582     'LR' => array(
583         'Africa/Monrovia',
584     ),
585     'LS' => array(
586         'Africa/Maseru',
587     ),
588     'LT' => array(
589         'Europe/Vilnius',
590     ),
591     'LU' => array(
592         'Europe/Luxembourg',
593     ),
594     'LV' => array(
595         'Europe/Riga',
596     ),
597     'LY' => array(
598         'Africa/Tripoli',
599     ),
600     'MA' => array(
601         'Africa/Casablanca',
602     ),
603     'MC' => array(
604         'Europe/Monaco',
605     ),
606     'MD' => array(
607         'Europe/Chisinau',
608     ),
609     'MG' => array(
610         'Indian/Antananarivo',
611     ),
612     'MH' => array(
613         'Pacific/Majuro',
614         'Pacific/Kwajalein',
615     ),
616     'MK' => array(
617         'Europe/Skopje',
618     ),
619     'ML' => array(
620         'Africa/Bamako',
621         'Africa/Timbuktu',
622     ),
623     'MM' => array(
624         'Asia/Rangoon',
625     ),
626     'MN' => array(
627         'Asia/Ulaanbaatar',
628         'Asia/Hovd',
629         'Asia/Choibalsan',
630     ),
631     'MO' => array(
632         'Asia/Macau',
633     ),
634     'MP' => array(
635         'Pacific/Saipan',
636     ),
637     'MQ' => array(
638         'America/Martinique',
639     ),
640     'MR' => array(
641         'Africa/Nouakchott',
642     ),
643     'MS' => array(
644         'America/Montserrat',
645     ),
646     'MT' => array(
647         'Europe/Malta',
648     ),
649     'MU' => array(
650         'Indian/Mauritius',
651     ),
652     'MV' => array(
653         'Indian/Maldives',
654     ),
655     'MW' => array(
656         'Africa/Blantyre',
657     ),
658     'MX' => array(
659         'America/Mexico_City',
660         'America/Cancun',
661         'America/Merida',
662         'America/Monterrey',
663         'America/Mazatlan',
664         'America/Chihuahua',
665         'America/Hermosillo',
666         'America/Tijuana',
667     ),
668     'MY' => array(
669         'Asia/Kuala_Lumpur',
670         'Asia/Kuching',
671     ),
672     'MZ' => array(
673         'Africa/Maputo',
674     ),
675     'NA' => array(
676         'Africa/Windhoek',
677     ),
678     'NC' => array(
679         'Pacific/Noumea',
680     ),
681     'NE' => array(
682         'Africa/Niamey',
683     ),
684     'NF' => array(
685         'Pacific/Norfolk',
686     ),
687     'NG' => array(
688         'Africa/Lagos',
689     ),
690     'NI' => array(
691         'America/Managua',
692     ),
693     'NL' => array(
694         'Europe/Amsterdam',
695     ),
696     'NO' => array(
697         'Europe/Oslo',
698     ),
699     'NP' => array(
700         'Asia/Katmandu',
701     ),
702     'NR' => array(
703         'Pacific/Nauru',
704     ),
705     'NU' => array(
706         'Pacific/Niue',
707     ),
708     'NZ' => array(
709         'Pacific/Auckland',
710         'Pacific/Chatham',
711     ),
712     'OM' => array(
713         'Asia/Muscat',
714     ),
715     'PA' => array(
716         'America/Panama',
717     ),
718     'PE' => array(
719         'America/Lima',
720     ),
721     'PF' => array(
722         'Pacific/Tahiti',
723         'Pacific/Marquesas',
724         'Pacific/Gambier',
725     ),
726     'PG' => array(
727         'Pacific/Port_Moresby',
728     ),
729     'PH' => array(
730         'Asia/Manila',
731     ),
732     'PK' => array(
733         'Asia/Karachi',
734     ),
735     'PL' => array(
736         'Europe/Warsaw',
737     ),
738     'PM' => array(
739         'America/Miquelon',
740     ),
741     'PN' => array(
742         'Pacific/Pitcairn',
743     ),
744     'PR' => array(
745         'America/Puerto_Rico',
746     ),
747     'PS' => array(
748         'Asia/Gaza',
749     ),
750     'PT' => array(
751         'Europe/Lisbon',
752         'Atlantic/Madeira',
753         'Atlantic/Azores',
754     ),
755     'PW' => array(
756         'Pacific/Palau',
757     ),
758     'PY' => array(
759         'America/Asuncion',
760     ),
761     'QA' => array(
762         'Asia/Qatar',
763     ),
764     'RE' => array(
765         'Indian/Reunion',
766     ),
767     'RO' => array(
768         'Europe/Bucharest',
769     ),
770     'RU' => array(
771         'Europe/Kaliningrad',
772         'Europe/Moscow',
773         'Europe/Samara',
774         'Asia/Yekaterinburg',
775         'Asia/Omsk',
776         'Asia/Novosibirsk',
777         'Asia/Krasnoyarsk',
778         'Asia/Irkutsk',
779         'Asia/Yakutsk',
780         'Asia/Vladivostok',
781         'Asia/Sakhalin',
782         'Asia/Magadan',
783         'Asia/Kamchatka',
784         'Asia/Anadyr',
785     ),
786     'RW' => array(
787         'Africa/Kigali',
788     ),
789     'SA' => array(
790         'Asia/Riyadh',
791     ),
792     'SB' => array(
793         'Pacific/Guadalcanal',
794     ),
795     'SC' => array(
796         'Indian/Mahe',
797     ),
798     'SD' => array(
799         'Africa/Khartoum',
800     ),
801     'SE' => array(
802         'Europe/Stockholm',
803     ),
804     'SG' => array(
805         'Asia/Singapore',
806     ),
807     'SH' => array(
808         'Atlantic/St_Helena',
809     ),
810     'SI' => array(
811         'Europe/Ljubljana',
812     ),
813     'SJ' => array(
814         'Arctic/Longyearbyen',
815         'Atlantic/Jan_Mayen',
816     ),
817     'SK' => array(
818         'Europe/Bratislava',
819     ),
820     'SL' => array(
821         'Africa/Freetown',
822     ),
823     'SM' => array(
824         'Europe/San_Marino',
825     ),
826     'SN' => array(
827         'Africa/Dakar',
828     ),
829     'SO' => array(
830         'Africa/Mogadishu',
831     ),
832     'SR' => array(
833         'America/Paramaribo',
834     ),
835     'ST' => array(
836         'Africa/Sao_Tome',
837     ),
838     'SV' => array(
839         'America/El_Salvador',
840     ),
841     'SY' => array(
842         'Asia/Damascus',
843     ),
844     'SZ' => array(
845         'Africa/Mbabane',
846     ),
847     'TC' => array(
848         'America/Grand_Turk',
849     ),
850     'TD' => array(
851         'Africa/Ndjamena',
852     ),
853     'TF' => array(
854         'Indian/Kerguelen',
855     ),
856     'TG' => array(
857         'Africa/Lome',
858     ),
859     'TH' => array(
860         'Asia/Bangkok',
861     ),
862     'TJ' => array(
863         'Asia/Dushanbe',
864     ),
865     'TK' => array(
866         'Pacific/Fakaofo',
867     ),
868     'TL' => array(
869         'Asia/Dili',
870     ),
871     'TM' => array(
872         'Asia/Ashgabat',
873     ),
874     'TN' => array(
875         'Africa/Tunis',
876     ),
877     'TO' => array(
878         'Pacific/Tongatapu',
879     ),
880     'TR' => array(
881         'Europe/Istanbul',
882     ),
883     'TT' => array(
884         'America/Port_of_Spain',
885     ),
886     'TV' => array(
887         'Pacific/Funafuti',
888     ),
889     'TW' => array(
890         'Asia/Taipei',
891     ),
892     'TZ' => array(
893         'Africa/Dar_es_Salaam',
894     ),
895     'UA' => array(
896         'Europe/Kiev',
897         'Europe/Uzhgorod',
898         'Europe/Zaporozhye',
899         'Europe/Simferopol',
900     ),
901     'UG' => array(
902         'Africa/Kampala',
903     ),
904     'UM' => array(
905         'Pacific/Johnston',
906         'Pacific/Midway',
907         'Pacific/Wake',
908     ),
909     'US' => array(
910         'America/New_York',
911         'America/Detroit',
912         'America/Louisville',
913         'America/Kentucky/Monticello',
914         'America/Indianapolis',
915         'America/Indiana/Marengo',
916         'America/Indiana/Knox',
917         'America/Indiana/Vevay',
918         'America/Chicago',
919         'America/Menominee',
920         'America/North_Dakota/Center',
921         'America/Denver',
922         'America/Boise',
923         'America/Shiprock',
924         'America/Phoenix',
925         'America/Los_Angeles',
926         'America/Anchorage',
927         'America/Juneau',
928         'America/Yakutat',
929         'America/Nome',
930         'America/Adak',
931         'Pacific/Honolulu',
932     ),
933     'UY' => array(
934         'America/Montevideo',
935     ),
936     'UZ' => array(
937         'Asia/Samarkand',
938         'Asia/Tashkent',
939     ),
940     'VA' => array(
941         'Europe/Vatican',
942     ),
943     'VC' => array(
944         'America/St_Vincent',
945     ),
946     'VE' => array(
947         'America/Caracas',
948     ),
949     'VG' => array(
950         'America/Tortola',
951     ),
952     'VI' => array(
953         'America/St_Thomas',
954     ),
955     'VN' => array(
956         'Asia/Saigon',
957     ),
958     'VU' => array(
959         'Pacific/Efate',
960     ),
961     'WF' => array(
962         'Pacific/Wallis',
963     ),
964     'WS' => array(
965         'Pacific/Apia',
966     ),
967     'YE' => array(
968         'Asia/Aden',
969     ),
970     'YT' => array(
971         'Indian/Mayotte',
972     ),
973     'ZA' => array(
974         'Africa/Johannesburg',
975     ),
976     'ZM' => array(
977         'Africa/Lusaka',
978     ),
979     'ZW' => array(
980         'Africa/Harare',
981     ),
982 );
983
984 ?>