date_sun_info()
Scopri come date_sun_info() di PHP restituisce alba, tramonto, transito e ore del crepuscolo per una data e posizione, con esempi pratici.
Introduzione
La funzione date_sun_info() di PHP restituisce i tempi di alba, tramonto, transito e crepuscolo per una data specifica e una posizione geografica. Invece di recuperare i dati solari da un servizio esterno, si passa un timestamp e una coppia di coordinate e si ottiene un array pronto all'uso di timestamp Unix. Questa pagina illustra la sintassi, i parametri, i valori restituiti e un esempio completo funzionante.
Nota:
date_sun_info()è stata deprecata in PHP 8.1 e rimossa in PHP 8.2. Questo tutorial è fornito per la manutenzione di codice legacy. Per le applicazioni PHP moderne, considera un servizio esterno (come l'API Sunrise-Sunset) o una libreria dedicata comesunrise-sunset-php.
Sintassi
date_sun_info(int $timestamp, float $latitude, float $longitude): arrayParametri
| Parametro | Tipo | Descrizione |
|---|---|---|
$timestamp | int | Un timestamp Unix (in UTC) che identifica il giorno da interrogare. |
$latitude | float | Latitudine della posizione, in gradi. Positivo = nord, negativo = sud. |
$longitude | float | Longitudine della posizione, in gradi. Positivo = est, negativo = ovest. |
Valore restituito
La funzione restituisce un array associativo di timestamp Unix. Ogni chiave indica un evento solare per quel giorno alle coordinate specificate:
| Chiave | Significato |
|---|---|
sunrise | Momento in cui il sole attraversa l'orizzonte all'alba. |
sunset | Momento in cui il sole attraversa l'orizzonte al tramonto. |
transit | Mezzogiorno solare — il sole è al suo punto più alto. |
civil_twilight_begin / civil_twilight_end | Sole 6° sotto l'orizzonte (attività all'aperto ancora possibili). |
nautical_twilight_begin / nautical_twilight_end | Sole 12° sotto l'orizzonte (orizzonte visibile in mare). |
astronomical_twilight_begin / astronomical_twilight_end | Sole 18° sotto l'orizzonte (cielo completamente buio). |
Se il sole non sorge mai o non tramonta mai in quel giorno (ad esempio, nelle regioni polari in estate o in inverno), il valore pertinente è true (il sole è alto tutto il giorno) o false (il sole non sorge mai) anziché un timestamp.
Utilizzo della funzione date_sun_info()
Poiché il primo argomento è un timestamp Unix, l'approccio più semplice è creare un oggetto DateTime per il giorno desiderato e passare il suo timestamp tramite getTimestamp(). Il flusso è il seguente:
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];Ecco un esempio completo per Londra, UK:
In questo esempio, creiamo un oggetto DateTime che rappresenta una data specifica e specifichiamo la latitudine e la longitudine di Londra, UK. Quindi chiamiamo la funzione date_sun_info() e le passiamo il timestamp dell'oggetto DateTime, insieme alla latitudine e alla longitudine.
La funzione date_sun_info() restituisce un array contenente informazioni sull'alba, il tramonto e altri orari correlati per la data e la posizione specificate. Ecco un esempio dell'output:
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
)I valori sono timestamp Unix grezzi, quindi per visualizzarli è necessario formattare ciascuno 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 sui fusi orari: La funzione si aspetta un timestamp Unix (UTC). Anche i tempi restituiti sono timestamp UTC, calcolati dalle coordinate fornite indipendentemente dal fuso orario locale del server. Quando li si formatta con
date(), l'output utilizza il fuso orario impostato dadate_default_timezone_set(), quindi impostalo esplicitamente se hai bisogno degli orari locali.
Funzioni correlate
date_sunrise()— restituisce solo l'orario dell'alba per una posizione.date_sunset()— restituisce solo l'orario del tramonto per una posizione.- PHP Date and Time — panoramica degli strumenti data/ora di PHP.
- PHP Time Zones — come PHP gestisce i fusi orari.
Conclusione
date_sun_info() restituisce alba, tramonto, transito e le tre fasi del crepuscolo per una data e una posizione specificate come array di timestamp Unix UTC. Passa un timestamp insieme a latitudine e longitudine, quindi formatta i valori restituiti con date() per visualizzarli. È utile per applicazioni meteorologiche, di pianificazione e con funzionalità basate sulla posizione — ma ricorda che è stata rimossa in PHP 8.2, quindi per il codice moderno usa un'API o una libreria esterna.