W3docs

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 come sunrise-sunset-php.

Sintassi

date_sun_info(int $timestamp, float $latitude, float $longitude): array

Parametri

ParametroTipoDescrizione
$timestampintUn timestamp Unix (in UTC) che identifica il giorno da interrogare.
$latitudefloatLatitudine della posizione, in gradi. Positivo = nord, negativo = sud.
$longitudefloatLongitudine 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:

ChiaveSignificato
sunriseMomento in cui il sole attraversa l'orizzonte all'alba.
sunsetMomento in cui il sole attraversa l'orizzonte al tramonto.
transitMezzogiorno solare — il sole è al suo punto più alto.
civil_twilight_begin / civil_twilight_endSole 6° sotto l'orizzonte (attività all'aperto ancora possibili).
nautical_twilight_begin / nautical_twilight_endSole 12° sotto l'orizzonte (orizzonte visibile in mare).
astronomical_twilight_begin / astronomical_twilight_endSole 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:

php— editable, runs on the server

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 da date_default_timezone_set(), quindi impostalo esplicitamente se hai bisogno degli orari locali.

Funzioni correlate

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.

Pratica

Pratica
Cosa fa la funzione 'date_sun_info' in PHP?
Cosa fa la funzione 'date_sun_info' in PHP?
Was this page helpful?