Foros del Web » Programando para Internet » PHP »

Combo con timezones

Estas en el tema de Combo con timezones en el foro de PHP en Foros del Web. Buenos días a todos, Estoy necesitando que los usuarios de una aplicación definan su Zona horaria para que la aplicación maneje sus datos con las ...
  #1 (permalink)  
Antiguo 14/12/2010, 10:12
 
Fecha de Ingreso: abril-2004
Mensajes: 154
Antigüedad: 20 años, 8 meses
Puntos: 0
Combo con timezones

Buenos días a todos,
Estoy necesitando que los usuarios de una aplicación definan su Zona horaria para que la aplicación maneje sus datos con las fechas y hora correcta. Existe alguna manera de generar dinamicamente todos los TimeZones que soporta PHP o algún código que ya los contenga todos???

No sería muy interesante tener que copiarlos todos desde la pagina de php.net para armar el <select>.

Mil gracias
__________________
Desdichado quien duerme en la mañana
  #2 (permalink)  
Antiguo 14/12/2010, 11:38
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Combo con timezones

Con esta funcion te tiene que dar:

Código:
function getLocalTimezone()
{
    $iTime = time();
    $arr = localtime($iTime);
    $arr[5] += 1900; 
    $arr[4]++;
    $iTztime = gmmktime($arr[2], $arr[1], $arr[0], $arr[4], $arr[3], $arr[5], $arr[8]);
    $offset = doubleval(($iTztime-$iTime)/(60*60));
    $zonelist = 
    array
    (
        'Kwajalein' => -12.00,
        'Pacific/Midway' => -11.00,
        'Pacific/Honolulu' => -10.00,
        'America/Anchorage' => -9.00,
        'America/Los_Angeles' => -8.00,
        'America/Denver' => -7.00,
        'America/Tegucigalpa' => -6.00,
        'America/New_York' => -5.00,
        'America/Caracas' => -4.30,
        'America/Halifax' => -4.00,
        'America/St_Johns' => -3.30,
        'America/Argentina/Buenos_Aires' => -3.00,
        'America/Sao_Paulo' => -3.00,
        'Atlantic/South_Georgia' => -2.00,
        'Atlantic/Azores' => -1.00,
        'Europe/Dublin' => 0,
        'Europe/Belgrade' => 1.00,
        'Europe/Minsk' => 2.00,
        'Asia/Kuwait' => 3.00,
        'Asia/Tehran' => 3.30,
        'Asia/Muscat' => 4.00,
        'Asia/Yekaterinburg' => 5.00,
        'Asia/Kolkata' => 5.30,
        'Asia/Katmandu' => 5.45,
        'Asia/Dhaka' => 6.00,
        'Asia/Rangoon' => 6.30,
        'Asia/Krasnoyarsk' => 7.00,
        'Asia/Brunei' => 8.00,
        'Asia/Seoul' => 9.00,
        'Australia/Darwin' => 9.30,
        'Australia/Canberra' => 10.00,
        'Asia/Magadan' => 11.00,
        'Pacific/Fiji' => 12.00,
        'Pacific/Tongatapu' => 13.00
    );
    $index = array_keys($zonelist, $offset);
    if(sizeof($index)!=1)
        return false;
    return $index[0];
}

Y para llamarla asi:


Código:
date_default_timezone_set(getLocalTimezone());
Nota: date_default_timezone_set — Establece la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script

Estan los mas comunmente utilizados...y casi siempre si uno no se encuentra se pone uno que esta cerca y coincide con la hora...no tenes que tenerlos a todos tampoco...

Sino podes instalarte toda la base completa (via PECL) que te dejan el link libre:
Note: The latest version of the timezone database can be installed via PECL's » ACA que es timezonedb....

Y aca te explica como instalar una PECL: http://php.net/manual/es/install.pecl.php

Saluteeeee
__________________
Lo maravilloso de aprender algo es que nadie puede arrebatárnoslo.
  #3 (permalink)  
Antiguo 14/12/2010, 12:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Combo con timezones

Puedes usar DateTimezone::listIdentifiers.

Saludos.

Etiquetas: combo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:00.