timezone_name_from_abbr

(PHP 5 >= 5.1.3)

timezone_name_from_abbrKısaltmasından, zaman diliminin adını döndürür

Açıklama

string timezone_name_from_abbr ( string $kısaltma [, int $gmt_farkı = -1 [, int $ysu_var = -1 ]] )

Değiştirgeler

kısaltma

Zaman dilimi kısaltması.

gmt_farkı

Yerel saatin GMT'ye göre saniye cinsinden farkı. Varsayılan değer, kısaltma değiştirgesinin karşılığı olarak bulunan ilk zaman diliminin döndürüleceği anlamına gelen -1'dir. Yoksa, farka uyan zaman dilimi aranır ve bulunamadığı durumlarda fark ne olursa olsun bulunan ilk zaman dilimi döndürülür.

ysu_var

Yaz saati uygulaması belirteci. Eğer kısaltma değiştirgesi yoksa zaman dilimi yalnızca gmt_farkı ve ysu_var değiştirgelerine göre aranacaktır.

Dönen Değerler

Başarılı olduğunda zaman dilimini adını, başarısız olduğunda FALSE döndürür.

Örnekler

Örnek 1 - timezone_name_from_abbr() örneği

<?php
echo timezone_name_from_abbr("EET") . "\n";
echo 
timezone_name_from_abbr(""36000) . "\n";
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Europe/Helsinki
Europe/Paris

Ayrıca Bakınız

add a note add a note

User Contributed Notes 2 notes

up
0
Master Tablu
5 years ago
Another way to do this is to wrap the function in a class that extends the DateTimeZone class:

<?php

/**
* Helps with timezones.
* @link http://us.php.net/manual/en/class.datetimezone.php
*
* @package  Date
*/
class Helper_DateTimeZone extends DateTimeZone
{
   
/**
     * Converts a timezone hourly offset to its timezone's name.
     * @example $offset = -5, $isDst = 0 <=> return value = 'America/New_York'
     *
     * @param float $offset The timezone's offset in hours.
     *                      Lowest value: -12 (Pacific/Kwajalein)
     *                      Highest value: 14 (Pacific/Kiritimati)
     * @param bool  $isDst  Is the offset for the timezone when it's in daylight
     *                      savings time?
     *
     * @return string The name of the timezone: 'Asia/Tokyo', 'Europe/Paris', ...
     */
   
final public static function tzOffsetToName($offset, $isDst = null)
    {
        if (
$isDst === null)
        {
           
$isDst = date('I');
        }

       
$offset *= 3600;
       
$zone    = timezone_name_from_abbr('', $offset, $isDst);

        if (
$zone === false)
        {
            foreach (
timezone_abbreviations_list() as $abbr)
            {
                foreach (
$abbr as $city)
                {
                    if ((bool)
$city['dst'] === (bool)$isDst &&
                       
strlen($city['timezone_id']) > 0    &&
                       
$city['offset'] == $offset)
                    {
                       
$zone = $city['timezone_id'];
                        break;
                    }
                }

                if (
$zone !== false)
                {
                    break;
                }
            }
        }
   
        return
$zone;
    }
}
?>

Then you could do something like this:

<?php
$Dtz
= new Helper_DateTimeZone(Helper_DateTimeZone::tzOffsetToName(-5));
var_dump($Dtz->getName());

string(16) "America/New_York"
?>
up
0
chris at mretc dot net
6 years ago
timezone_name_from_abbr() sometimes returns FALSE instead of an actual timezone: http://bugs.php.net/44780

It's possible to workaround it for some cases by getting the timezone name from timezone_abbreviations_list(). For example, if you have the GMT offset and want a timezone name:

<?php
/* Takes a GMT offset (in hours) and returns a timezone name */
function tz_offset_to_name($offset)
{
       
$offset *= 3600; // convert hour offset to seconds
       
$abbrarray = timezone_abbreviations_list();
        foreach (
$abbrarray as $abbr)
        {
                foreach (
$abbr as $city)
                {
                        if (
$city['offset'] == $offset)
                        {
                                return
$city['timezone_id'];
                        }
                }
        }

        return
FALSE;
}
?>
To Top