unixtojd()
Scopri come convertire un timestamp Unix in una data giuliana in PHP con la funzione unixtojd() e come funziona il conteggio dei giorni giuliani.
Convertire un Timestamp Unix in un Giorno Giuliano in PHP
La funzione unixtojd() di PHP converte un timestamp Unix in un conteggio di Giorni Giuliani — un intero singolo che conta il numero di giorni dall'inizio del Periodo Giuliano (1° gennaio 4713 a.C. nel calendario giuliano prolettico). Questa pagina spiega cosa restituisce la funzione, come chiamarla, i casi in cui si discosta dall'intuizione e come eseguire la conversione inversa.
Un timestamp Unix è il numero di secondi trascorsi dal 1° gennaio 1970, 00:00:00 UTC. Un Numero di Giorno Giuliano (JDN) è un conteggio continuo dei giorni ampiamente utilizzato in astronomia e nel calcolo dei calendari, perché la differenza tra due Giorni Giuliani è semplicemente il numero di giorni che li separa — senza bisogno di calcoli su mesi o anni bisestili. Nota che il "Giorno Giuliano" qui non coincide con una data nel calendario giuliano storico; è un conteggio progressivo di giorni.
Come Funziona unixtojd()
unixtojd() prende il numero intero di secondi di un timestamp Unix, lo converte in giorni interi e aggiunge il Numero di Giorno Giuliano dell'epoca Unix (1970-01-01), che è 2440588. La conversione avviene in UTC e il risultato ha granularità a livello di giorno — le ore, i minuti e i secondi nel timestamp vengono scartati, quindi ogni momento all'interno dello stesso giorno UTC viene mappato allo stesso Giorno Giuliano.
unixtojd() fa parte dell'estensione Calendar di PHP. È compilata per impostazione predefinita nella maggior parte delle build, ma su un'installazione PHP minimale potrebbe essere necessario abilitare l'estensione calendar prima che la funzione sia disponibile.
Sintassi
unixtojd(?int $timestamp = null): int|false$timestamp— Il timestamp Unix da convertire. Se omesso (onull), viene usata l'ora corrente, esattamente come se si fosse passatotime().- Restituisce un intero rappresentante il Numero di Giorno Giuliano, oppure
falsese il timestamp non può essere convertito.
Esempio di Base
Converti il timestamp Unix corrente in un Giorno Giuliano:
Questo stampa il timestamp Unix corrente e il corrispondente Numero di Giorno Giuliano.
Punti di Riferimento Noti
Poiché la conversione è fissa, alcuni timestamp producono sempre lo stesso Giorno Giuliano. Questi sono utili per verificare la correttezza del codice:
<?php
echo unixtojd(0), "\n"; // 2440588 -> 1970-01-01 (the Unix epoch)
echo unixtojd(mktime(0, 0, 0, 1, 1, 2000)), "\n"; // 2451545 -> 2000-01-01
echo unixtojd(mktime(0, 0, 0, 7, 4, 2025)), "\n"; // 2460861 -> 2025-07-04Chiamarla Senza Argomenti
Non passare alcun argomento equivale a passare time(), quindi entrambe le righe qui sotto restituiscono lo stesso valore:
<?php
echo unixtojd(), "\n"; // current day, no timestamp needed
echo unixtojd(time()), "\n"; // identical resultConversione Inversa: jdtounix()
La funzione inversa di unixtojd() è jdtounix(), che trasforma un Numero di Giorno Giuliano in un timestamp Unix impostato a mezzanotte UTC di quel giorno. Poiché unixtojd() scarta la parte dell'ora del giorno, un viaggio di andata e ritorno ti riporta all'inizio del giorno anziché al momento originale:
<?php
$start = mktime(15, 30, 0, 7, 4, 2025); // 2025-07-04 15:30:00
$jd = unixtojd($start);
$back = jdtounix($jd);
echo "Original: ", gmdate("Y-m-d H:i:s", $start), " UTC\n"; // 2025-07-04 15:30:00 UTC
echo "Back: ", gmdate("Y-m-d H:i:s", $back), " UTC\n"; // 2025-07-04 00:00:00 UTCQuando Usarla?
I Numeri di Giorno Giuliano sono ideali quando si ha bisogno di contare giorni interi tra due date senza doversi preoccupare della lunghezza dei mesi e degli anni bisestili: calcoli astronomici, logica di pianificazione, contatori "giorni mancanti" e interoperabilità con dataset scientifici che memorizzano le date come Giorni Giuliani. Per la formattazione e l'aritmetica ordinaria delle date, le API DateTime e le funzioni di data sono solitamente la scelta migliore.
Conclusione
unixtojd() converte un timestamp Unix in un Numero di Giorno Giuliano — un conteggio UTC a livello di giorno radicato nel valore di epoca 2440588. Per impostazione predefinita utilizza l'ora corrente se chiamata senza argomenti, ignora la parte relativa all'ora del giorno ed è invertita da jdtounix(). Combinala con mktime() e time() per convertire qualsiasi momento in un Giorno Giuliano per calcoli basati sui giorni.