timezone_name_from_abbr()
En este artículo, cubrimos la sintaxis, parámetros y valor de retorno de la función PHP timezone_name_from_abbr() con ejemplos prácticos.
Introducción
En este artículo, cubriremos la sintaxis, los parámetros y el valor de retorno de la función PHP timezone_name_from_abbr(), junto con ejemplos prácticos de su uso.
Comprendiendo la función PHP timezone_name_from_abbr()
La función timezone_name_from_abbr() en PHP devuelve el nombre completo de la zona horaria IANA (como America/New_York) que corresponde a una abreviatura dada (como EST). Devuelve el nombre de la zona horaria en caso de éxito o false en caso de error.
Esta es la operación inversa a buscar una abreviatura para una zona conocida. Un caso de uso común es analizar una cadena de fecha donde solo está disponible la abreviatura (por ejemplo, una línea de registro que contiene EST) y necesitas un identificador de zona canónico para construir un DateTimeZone.
Nota: Esta función es notoriamente poco confiable porque muchas abreviaturas de zona horaria son ambiguas o no estándar: EST, IST y CST se corresponden con varias regiones del mundo. El manual de PHP recomienda usar DateTimeZone para aplicaciones en producción. Al usar timezone_name_from_abbr(), proporciona siempre el parámetro $gmtOffset para que PHP pueda distinguir entre zonas que comparten una abreviatura.
Sintaxis
La sintaxis de la función timezone_name_from_abbr() es la siguiente:
Sintaxis de la función PHP timezone_name_from_abbr()
<?php
string|false timezone_name_from_abbr(string $abbr, int $gmtOffset = -1, int $isdst = -1)Parámetros
La función acepta tres parámetros:
$abbr- El nombre abreviado de la zona horaria (por ejemplo,ESToCEST). No distingue entre mayúsculas y minúsculas.$gmtOffset- El desplazamiento GMT de la zona horaria en segundos (no en horas). Este parámetro es opcional, pero muy recomendable. Si no se proporciona (-1), PHP intentará adivinarlo basándose solo en$abbr, lo que puede devolverfalseo una zona horaria incorrecta debido a abreviaturas ambiguas.$isdst- Un indicador de si el horario de verano está en vigor:1para horario de verano,0para hora estándar,-1(el valor predeterminado) para ignorar. Cuando se establece, solo se consideran las zonas que coincidan con ese estado de DST.
Una forma práctica de calcular el desplazamiento en segundos es horas × 3600; por ejemplo, UTC−5 equivale a -5 * 3600 = -18000.
Valor de retorno
La función timezone_name_from_abbr() devuelve el nombre de la zona horaria (una cadena como America/New_York) en caso de éxito, o false en caso de error cuando ninguna zona coincide con la abreviatura y el desplazamiento dados.
Ejemplos
Veamos algunos ejemplos prácticos de cómo se puede usar la función timezone_name_from_abbr() en PHP.
Ejemplo del uso de la función timezone_name_from_abbr() en PHP
En los ejemplos anteriores, pasamos los nombres abreviados de zonas horarias EST y PST junto con sus respectivos desplazamientos GMT en segundos. La función devuelve los nombres completos de las zonas horarias correspondientes, America/New_York y America/Los_Angeles respectivamente. Comprueba siempre si el resultado es false para manejar los casos en que la abreviatura no se reconoce.
El resultado puede pasarse directamente a un DateTimeZone para realizar operaciones reales con fechas:
<?php
$name = timezone_name_from_abbr('CET', 3600); // "Europe/Berlin"
$date = new DateTime('2024-01-15 12:00', new DateTimeZone($name));
echo $date->format('Y-m-d H:i T'); // outputs "2024-01-15 12:00 CET"Funciones relacionadas
timezone_abbreviations_list()- lista todas las abreviaturas que PHP conoce, con desplazamientos y nombres de zona.timezone_identifiers_list()- devuelve todos los identificadores de zona horaria IANA válidos.date_default_timezone_set()- establece la zona horaria predeterminada para todas las funciones de fecha y hora.
Conclusión
Hemos cubierto la sintaxis y el uso de la función PHP timezone_name_from_abbr(). Esta función puede convertir nombres de zona horaria abreviados en sus identificadores completos, aunque debido a que las abreviaturas son ambiguas, siempre debes proporcionar $gmtOffset y preferir DateTimeZone para aplicaciones robustas. Esperamos que este artículo haya sido de utilidad.