Saltar al contenido

Husos horarios de PHP

Un huso horario es una región del mundo que tiene una hora estándar uniforme con fines legales, comerciales y sociales. En PHP, los husos horarios se representan como cadenas que identifican una región geográfica, como "America/New_York" o "Europe/London".

Funciones de husos horarios en PHP

PHP proporciona varias funciones para trabajar con husos horarios. A continuación se muestran algunas de las funciones más utilizadas:

1. date_default_timezone_set()

Esta función establece el huso horario predeterminado utilizado por todas las funciones de fecha/hora en un script. Toma una cadena de huso horario como argumento, como "America/New_York" o "Europe/London".

2. date_default_timezone_get()

Esta función devuelve el huso horario predeterminado utilizado por todas las funciones de fecha/hora en un script.

3. timezone_identifiers_list()

Esta función devuelve un array indexado que contiene todos los identificadores de husos horarios definidos.

4. timezone_abbreviations_list()

Esta función devuelve un array asociativo que contiene abreviaturas de husos horarios y sus desplazamientos respecto a UTC. (Nota: Obsoleto en PHP 8.1 y eliminado en PHP 8.2. Utilice DateTimeZone::listIdentifiers() o clases OOP modernas en su lugar.)

5. timezone_name_from_abbr()

Esta función devuelve el nombre del huso horario a partir de una abreviatura.

6. DateTimeZone::getOffset()

Este método devuelve el desplazamiento del huso horario respecto a UTC para un objeto DateTime dado.

Enfoque moderno: Aunque las funciones procedurales anteriores son compatibles con versiones antiguas de PHP, el desarrollo moderno de PHP recomienda utilizar las clases DateTime y DateTimeZone. Ofrecen un mejor diseño orientado a objetos, manejo automático del horario de verano y son el estándar para las aplicaciones PHP actuales.

Ejemplos de uso

Veamos algunos ejemplos prácticos del uso de las funciones de husos horarios en PHP.

Ejemplo 1: Establecer el huso horario predeterminado

Supongamos que desea establecer el huso horario predeterminado en "America/New_York". Puede hacerlo utilizando la función date_default_timezone_set(), de la siguiente manera:

Establecer el huso horario predeterminado en PHP

php
date_default_timezone_set("America/New_York");

Esto establece el huso horario predeterminado en "America/New_York".

Ejemplo 2: Obtener el huso horario predeterminado

Supongamos que desea obtener el huso horario predeterminado. Puede hacerlo utilizando la función date_default_timezone_get(). Para garantizar que este ejemplo se ejecute de forma independiente, primero establecemos un huso horario predeterminado:

Obtener el huso horario predeterminado

php
<?php

date_default_timezone_set('UTC');
$timezone = date_default_timezone_get();
echo "The default timezone is: " . $timezone;

?>

Esto muestra "El huso horario predeterminado es: UTC".

Ejemplo 3: Listar identificadores de husos horarios

Supongamos que desea listar todos los identificadores de husos horarios definidos. Puede hacerlo utilizando la función timezone_identifiers_list():

Listar identificadores de husos horarios en PHP

php
<?php

date_default_timezone_set('UTC');
$timezones = timezone_identifiers_list();
foreach ($timezones as $timezone) {
    echo $timezone . "\n";
}

?>

Esto muestra una lista de todos los identificadores de husos horarios definidos.

Ejemplo 4: Conversión de husos horarios con clases modernas

Para la conversión de husos horarios y el manejo automático del horario de verano, utilice las clases DateTime y DateTimeZone:

Conversión de husos horarios en PHP

php
<?php

$dt = new DateTime('2024-01-01 12:00:00', new DateTimeZone('America/New_York'));
$dt->setTimezone(new DateTimeZone('Europe/London'));
echo $dt->format('Y-m-d H:i:s P');

?>

Esto muestra la hora convertida en Londres, teniendo automáticamente en cuenta las diferencias de horario de verano.

Conclusión

En este artículo, hemos tratado los husos horarios en PHP y las funciones utilizadas para trabajar con ellos. Hemos explicado qué son los husos horarios y proporcionado ejemplos tanto de funciones procedurales antiguas como de enfoques modernos orientados a objetos. Al utilizar estas funciones en sus aplicaciones PHP, podrá trabajar fácilmente con los husos horarios y garantizar que sus cálculos de fecha y hora sean precisos y confiables.

Práctica

¿Qué puede inferir sobre el manejo de husos horarios en PHP basándose en la información encontrada en este sitio web?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.