SORU
13 Kasım 2009, Cuma


Oluşturma PHP ile dilimleri listesini içeren bir açılır menü

Çoğu site bazı kullanıcılar tercih ettikleri zaman diliminde sitesinde tarihlerini göstermek gerekir. Aşağıda two lists PHP 5 I found and sonra bir yöntem using the built in PHP DateTime sınıf.

UTC kayıtlı kullanıcı uzaklığı elde etmek için kullanmaya teşebbüs için en iyi olacağını bilmek için yardıma ihtiyacım var.

Bir:

<option value="-12">[UTC - 12] Baker Island Time</option>
<option value="-11">[UTC - 11] Niue Time, Samoa Standard Time</option>
<option value="-10">[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time</option>
<option value="-9.5">[UTC - 9:30] Marquesas Islands Time</option>
<option value="-9">[UTC - 9] Alaska Standard Time, Gambier Island Time</option>
<option value="-8">[UTC - 8] Pacific Standard Time</option>
<option value="-7">[UTC - 7] Mountain Standard Time</option>
<option value="-6">[UTC - 6] Central Standard Time</option>
<option value="-5">[UTC - 5] Eastern Standard Time</option>
<option value="-4.5">[UTC - 4:30] Venezuelan Standard Time</option>
<option value="-4">[UTC - 4] Atlantic Standard Time</option>
<option value="-3.5">[UTC - 3:30] Newfoundland Standard Time</option>
<option value="-3">[UTC - 3] Amazon Standard Time, Central Greenland Time</option>
<option value="-2">[UTC - 2] Fernando de Noronha Time, South Georgia & the South Sandwich Islands Time</option>
<option value="-1">[UTC - 1] Azores Standard Time, Cape Verde Time, Eastern Greenland Time</option>
<option value="0" selected="selected">[UTC] Western European Time, Greenwich Mean Time</option>
<option value="1">[UTC   1] Central European Time, West African Time</option>
<option value="2">[UTC   2] Eastern European Time, Central African Time</option>
<option value="3">[UTC   3] Moscow Standard Time, Eastern African Time</option>
<option value="3.5">[UTC   3:30] Iran Standard Time</option>
<option value="4">[UTC   4] Gulf Standard Time, Samara Standard Time</option>
<option value="4.5">[UTC   4:30] Afghanistan Time</option>
<option value="5">[UTC   5] Pakistan Standard Time, Yekaterinburg Standard Time</option>
<option value="5.5">[UTC   5:30] Indian Standard Time, Sri Lanka Time</option>
<option value="5.75">[UTC   5:45] Nepal Time</option>
<option value="6">[UTC   6] Bangladesh Time, Bhutan Time, Novosibirsk Standard Time</option>
<option value="6.5">[UTC   6:30] Cocos Islands Time, Myanmar Time</option>
<option value="7">[UTC   7] Indochina Time, Krasnoyarsk Standard Time</option>
<option value="8">[UTC   8] Chinese Standard Time, Australian Western Standard Time, Irkutsk Standard Time</option>
<option value="8.75">[UTC   8:45] Southeastern Western Australia Standard Time</option>
<option value="9">[UTC   9] Japan Standard Time, Korea Standard Time, Chita Standard Time</option>
<option value="9.5">[UTC   9:30] Australian Central Standard Time</option>
<option value="10">[UTC   10] Australian Eastern Standard Time, Vladivostok Standard Time</option>
<option value="10.5">[UTC   10:30] Lord Howe Standard Time</option>
<option value="11">[UTC   11] Solomon Island Time, Magadan Standard Time</option>
<option value="11.5">[UTC   11:30] Norfolk Island Time</option>
<option value="12">[UTC   12] New Zealand Time, Fiji Time, Kamchatka Standard Time</option>
<option value="12.75">[UTC   12:45] Chatham Islands Time</option>
<option value="13">[UTC   13] Tonga Time, Phoenix Islands Time</option>
<option value="14">[UTC   14] Line Island Time</option>

Ya dost değerleri kullanarak PHP:

<option value="Pacific/Midway">(GMT-11:00) Midway Island, Samoa</option>
<option value="America/Adak">(GMT-10:00) Hawaii-Aleutian</option>
<option value="Etc/GMT 10">(GMT-10:00) Hawaii</option>
<option value="Pacific/Marquesas">(GMT-09:30) Marquesas Islands</option>
<option value="Pacific/Gambier">(GMT-09:00) Gambier Islands</option>
<option value="America/Anchorage">(GMT-09:00) Alaska</option>
<option value="America/Ensenada">(GMT-08:00) Tijuana, Baja California</option>
<option value="Etc/GMT 8">(GMT-08:00) Pitcairn Islands</option>
<option value="America/Los_Angeles">(GMT-08:00) Pacific Time (US & Canada)</option>
<option value="America/Denver">(GMT-07:00) Mountain Time (US & Canada)</option>
<option value="America/Chihuahua">(GMT-07:00) Chihuahua, La Paz, Mazatlan</option>
<option value="America/Dawson_Creek">(GMT-07:00) Arizona</option>
<option value="America/Belize">(GMT-06:00) Saskatchewan, Central America</option>
<option value="America/Cancun">(GMT-06:00) Guadalajara, Mexico City, Monterrey</option>
<option value="Chile/EasterIsland">(GMT-06:00) Easter Island</option>
<option value="America/Chicago">(GMT-06:00) Central Time (US & Canada)</option>
<option value="America/New_York">(GMT-05:00) Eastern Time (US & Canada)</option>
<option value="America/Havana">(GMT-05:00) Cuba</option>
<option value="America/Bogota">(GMT-05:00) Bogota, Lima, Quito, Rio Branco</option>
<option value="America/Caracas">(GMT-04:30) Caracas</option>
<option value="America/Santiago">(GMT-04:00) Santiago</option>
<option value="America/La_Paz">(GMT-04:00) La Paz</option>
<option value="Atlantic/Stanley">(GMT-04:00) Faukland Islands</option>
<option value="America/Campo_Grande">(GMT-04:00) Brazil</option>
<option value="America/Goose_Bay">(GMT-04:00) Atlantic Time (Goose Bay)</option>
<option value="America/Glace_Bay">(GMT-04:00) Atlantic Time (Canada)</option>
<option value="America/St_Johns">(GMT-03:30) Newfoundland</option>
<option value="America/Araguaina">(GMT-03:00) UTC-3</option>
<option value="America/Montevideo">(GMT-03:00) Montevideo</option>
<option value="America/Miquelon">(GMT-03:00) Miquelon, St. Pierre</option>
<option value="America/Godthab">(GMT-03:00) Greenland</option>
<option value="America/Argentina/Buenos_Aires">(GMT-03:00) Buenos Aires</option>
<option value="America/Sao_Paulo">(GMT-03:00) Brasilia</option>
<option value="America/Noronha">(GMT-02:00) Mid-Atlantic</option>
<option value="Atlantic/Cape_Verde">(GMT-01:00) Cape Verde Is.</option>
<option value="Atlantic/Azores">(GMT-01:00) Azores</option>
<option value="Europe/Belfast">(GMT) Greenwich Mean Time : Belfast</option>
<option value="Europe/Dublin">(GMT) Greenwich Mean Time : Dublin</option>
<option value="Europe/Lisbon">(GMT) Greenwich Mean Time : Lisbon</option>
<option value="Europe/London">(GMT) Greenwich Mean Time : London</option>
<option value="Africa/Abidjan">(GMT) Monrovia, Reykjavik</option>
<option value="Europe/Amsterdam">(GMT 01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</option>
<option value="Europe/Belgrade">(GMT 01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague</option>
<option value="Europe/Brussels">(GMT 01:00) Brussels, Copenhagen, Madrid, Paris</option>
<option value="Africa/Algiers">(GMT 01:00) West Central Africa</option>
<option value="Africa/Windhoek">(GMT 01:00) Windhoek</option>
<option value="Asia/Beirut">(GMT 02:00) Beirut</option>
<option value="Africa/Cairo">(GMT 02:00) Cairo</option>
<option value="Asia/Gaza">(GMT 02:00) Gaza</option>
<option value="Africa/Blantyre">(GMT 02:00) Harare, Pretoria</option>
<option value="Asia/Jerusalem">(GMT 02:00) Jerusalem</option>
<option value="Europe/Minsk">(GMT 02:00) Minsk</option>
<option value="Asia/Damascus">(GMT 02:00) Syria</option>
<option value="Europe/Moscow">(GMT 03:00) Moscow, St. Petersburg, Volgograd</option>
<option value="Africa/Addis_Ababa">(GMT 03:00) Nairobi</option>
<option value="Asia/Tehran">(GMT 03:30) Tehran</option>
<option value="Asia/Dubai">(GMT 04:00) Abu Dhabi, Muscat</option>
<option value="Asia/Yerevan">(GMT 04:00) Yerevan</option>
<option value="Asia/Kabul">(GMT 04:30) Kabul</option>
<option value="Asia/Yekaterinburg">(GMT 05:00) Ekaterinburg</option>
<option value="Asia/Tashkent">(GMT 05:00) Tashkent</option>
<option value="Asia/Kolkata">(GMT 05:30) Chennai, Kolkata, Mumbai, New Delhi</option>
<option value="Asia/Katmandu">(GMT 05:45) Kathmandu</option>
<option value="Asia/Dhaka">(GMT 06:00) Astana, Dhaka</option>
<option value="Asia/Novosibirsk">(GMT 06:00) Novosibirsk</option>
<option value="Asia/Rangoon">(GMT 06:30) Yangon (Rangoon)</option>
<option value="Asia/Bangkok">(GMT 07:00) Bangkok, Hanoi, Jakarta</option>
<option value="Asia/Krasnoyarsk">(GMT 07:00) Krasnoyarsk</option>
<option value="Asia/Hong_Kong">(GMT 08:00) Beijing, Chongqing, Hong Kong, Urumqi</option>
<option value="Asia/Irkutsk">(GMT 08:00) Irkutsk, Ulaan Bataar</option>
<option value="Australia/Perth">(GMT 08:00) Perth</option>
<option value="Australia/Eucla">(GMT 08:45) Eucla</option>
<option value="Asia/Tokyo">(GMT 09:00) Osaka, Sapporo, Tokyo</option>
<option value="Asia/Seoul">(GMT 09:00) Seoul</option>
<option value="Asia/Yakutsk">(GMT 09:00) Yakutsk</option>
<option value="Australia/Adelaide">(GMT 09:30) Adelaide</option>
<option value="Australia/Darwin">(GMT 09:30) Darwin</option>
<option value="Australia/Brisbane">(GMT 10:00) Brisbane</option>
<option value="Australia/Hobart">(GMT 10:00) Hobart</option>
<option value="Asia/Vladivostok">(GMT 10:00) Vladivostok</option>
<option value="Australia/Lord_Howe">(GMT 10:30) Lord Howe Island</option>
<option value="Etc/GMT-11">(GMT 11:00) Solomon Is., New Caledonia</option>
<option value="Asia/Magadan">(GMT 11:00) Magadan</option>
<option value="Pacific/Norfolk">(GMT 11:30) Norfolk Island</option>
<option value="Asia/Anadyr">(GMT 12:00) Anadyr, Kamchatka</option>
<option value="Pacific/Auckland">(GMT 12:00) Auckland, Wellington</option>
<option value="Etc/GMT-12">(GMT 12:00) Fiji, Kamchatka, Marshall Is.</option>
<option value="Pacific/Chatham">(GMT 12:45) Chatham Islands</option>
<option value="Pacific/Tongatapu">(GMT 13:00) Nuku'alofa</option>
<option value="Pacific/Kiritimati">(GMT 14:00) Kiritimati</option>

Veya PHP kullanarak sadece kendini

$timezones = DateTimeZone::listAbbreviations();

$cities = array();
foreach( $timezones as $key => $zones )
{
    foreach( $zones as $id => $zone )
    {
        /**
         * Only get timezones explicitely not part of "Others".
         * @see http://www.php.net/manual/en/timezones.others.php
         */
        if ( preg_match( '/^(America|Antartica|Arctic|Asia|Atlantic|Europe|Indian|Pacific)\//', $zone['timezone_id'] ) 
    		&& $zone['timezone_id']) {
            $cities[$zone['timezone_id']][] = $key;
    	}
    }
}

// For each city, have a comma separated list of all possible timezones for that city.
foreach( $cities as $key => $value )
    $cities[$key] = join( ', ', $value);

// Only keep one city (the first and also most important) for each set of possibilities. 
$cities = array_unique( $cities );

// Sort by area/city name.
ksort( $cities );

Son bir PHP sürümü kullanılıyor büyümek gibi güvenli olacak gibi görünüyor. Ayrıca dilimleri bağlamak için gerekli bir dizi etrafında şehir isimleri değiştirirsin.

CEVAP
13 Kasım 2009, Cuma


Preg_match 100 yapıyor bazı zamanlar önlemek ve bu listenizi oluşturmak için yaparım dışında PHP bunu yapmak istiyorum.

$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);

Ayrıca, PHP için isimlerini 'zaman dilimlerinin DST göre değişecektir.' ve GMT uzaklıklar unut kullanırdım Phpbb içinde böyle bir kodu b/c hala ve DateTime güveniyor ya da nesneleri orada olmak DateTimeZone yok PHP4 destekleyen, ancak bu şekilde olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Deany Boii

    Deany Boii

    27 Kasım 2007
  • HSmasteryoda .

    HSmasteryoda

    22 Ocak 2010
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011