date_sun_info()
Aprende cómo PHP date_sun_info() devuelve tiempos de amanecer, atardecer, tránsito y crepúsculo para una fecha y ubicación, con sintaxis y ejemplos.
Introducción
La función date_sun_info() de PHP devuelve los tiempos de amanecer, atardecer, tránsito y crepúsculo para una fecha específica y una ubicación geográfica. En lugar de obtener datos solares de un servicio externo, se pasa un timestamp y un par de coordenadas y se obtiene un array de timestamps Unix listo para usar. Esta página cubre su sintaxis, parámetros, valores de retorno y un ejemplo completo funcional.
Nota:
date_sun_info()fue deprecada en PHP 8.1 y eliminada en PHP 8.2. Este tutorial se proporciona para el mantenimiento de código heredado. Para aplicaciones PHP modernas, considera un servicio externo (como la API Sunrise-Sunset) o una biblioteca dedicada comosunrise-sunset-php.
Sintaxis
date_sun_info(int $timestamp, float $latitude, float $longitude): arrayParámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
$timestamp | int | Un timestamp Unix (en UTC) que identifica el día a consultar. |
$latitude | float | Latitud de la ubicación, en grados. Positivo = norte, negativo = sur. |
$longitude | float | Longitud de la ubicación, en grados. Positivo = este, negativo = oeste. |
Valor de retorno
La función devuelve un array asociativo de timestamps Unix. Cada clave marca un evento solar para ese día en las coordenadas dadas:
| Clave | Significado |
|---|---|
sunrise | Momento en que el sol cruza el horizonte al amanecer. |
sunset | Momento en que el sol cruza el horizonte al atardecer. |
transit | Mediodía solar — el sol está en su punto más alto. |
civil_twilight_begin / civil_twilight_end | Sol 6° bajo el horizonte (actividad al aire libre aún posible). |
nautical_twilight_begin / nautical_twilight_end | Sol 12° bajo el horizonte (horizonte visible en el mar). |
astronomical_twilight_begin / astronomical_twilight_end | Sol 18° bajo el horizonte (cielo completamente oscuro). |
Si el sol nunca sale o nunca se pone ese día (por ejemplo, regiones polares en verano o invierno), el valor correspondiente es true (el sol está arriba todo el día) o false (el sol nunca sale) en lugar de un timestamp.
Uso de la función date_sun_info()
Dado que el primer argumento es un timestamp Unix, el enfoque más sencillo es construir un objeto DateTime para el día que interesa y pasar su timestamp mediante getTimestamp(). El flujo es el siguiente:
graph TD;
A[Create DateTime object] --> B[Get timestamp for the date];
B --> C[Call date_sun_info with timestamp + coordinates];
C --> D[Read sunrise / sunset / twilight from the result];Aquí hay un ejemplo completo para Londres, Reino Unido:
En este ejemplo, creamos un objeto DateTime que representa una fecha específica, y especificamos la latitud y longitud de Londres, Reino Unido. Luego llamamos a la función date_sun_info() y pasamos el timestamp del objeto DateTime, junto con la latitud y longitud.
La función date_sun_info() devuelve un array que contiene información sobre el amanecer, el atardecer y otros tiempos relacionados para la fecha y ubicación especificadas. A continuación se muestra un ejemplo de la salida:
Array
(
[sunrise] => 1646242025
[sunset] => 1646282555
[transit] => 1646262290
[civil_twilight_begin] => 1646239733
[civil_twilight_end] => 1646284847
[nautical_twilight_begin] => 1646235838
[nautical_twilight_end] => 1646288742
[astronomical_twilight_begin] => 1646231998
[astronomical_twilight_end] => 1646292582
)Los valores son timestamps Unix sin procesar, por lo que para mostrarlos se formatea cada uno con date() o date_format():
<?php
$sun_info = date_sun_info(strtotime('2023-03-03'), 51.5074, -0.1278);
echo 'Sunrise: ' . date('H:i:s', $sun_info['sunrise']) . "\n";
echo 'Sunset: ' . date('H:i:s', $sun_info['sunset']) . "\n";
?>Nota sobre zonas horarias: La función espera un timestamp Unix (UTC). Los tiempos devueltos también son timestamps UTC, calculados a partir de las coordenadas proporcionadas independientemente de la zona horaria local del servidor. Al formatearlos con
date(), la salida utiliza la zona horaria establecida pordate_default_timezone_set(), así que configúrala explícitamente si necesitas la hora local.
Funciones relacionadas
date_sunrise()— devuelve solo el tiempo de amanecer para una ubicación.date_sunset()— devuelve solo el tiempo de atardecer para una ubicación.- Fecha y hora en PHP — descripción general de las herramientas de fecha/hora de PHP.
- Zonas horarias en PHP — cómo PHP gestiona las zonas horarias.
Conclusión
date_sun_info() devuelve el amanecer, el atardecer, el tránsito y las tres fases del crepúsculo para una fecha y ubicación dadas como un array de timestamps Unix en UTC. Se pasa un timestamp junto con la latitud y longitud, y luego se formatean los valores devueltos con date() para mostrarlos. Es útil para funciones meteorológicas, de programación y de conciencia de ubicación — pero recuerda que fue eliminada en PHP 8.2, así que usa una API externa o una biblioteca en código moderno.