gregoriantojd()
La funzione gregoriantojd() di PHP converte una data del calendario gregoriano in un conteggio dei giorni giuliani, un intero che rappresenta una data.
Introduzione
La funzione PHP gregoriantojd() converte una data nel calendario gregoriano in un conteggio dei giorni giuliani — un singolo intero che rappresenta una data contando i giorni trascorsi a partire da un punto di partenza fisso. Questa pagina spiega il significato di questi termini, mostra la firma della funzione e i valori restituiti, illustra un esempio funzionante e fornisce i collegamenti alle funzioni di calendario inverse e correlate.
gregoriantojd() fa parte dell'estensione Calendar inclusa in PHP. Non è deprecata, ma la maggior parte dei progetti moderni utilizza i conteggi dei giorni giuliani solo per l'astronomia, l'interoperabilità con dati scientifici o la conversione tra sistemi di calendario. Per le operazioni aritmetiche e la formattazione delle date quotidiane, si consiglia di utilizzare la classe DateTime.
Storia del Calendario Gregoriano
Il calendario gregoriano fu introdotto per correggere gli errori del calendario giuliano. Il calendario giuliano si basava sull'idea che un anno durava esattamente 365,25 giorni. Tuttavia, questo non era del tutto preciso e il calendario si è gradualmente desincronizzato rispetto all'anno solare. Quando fu introdotto il calendario gregoriano, quello giuliano era indietro di 10 giorni.
Il calendario gregoriano risolse questo problema introducendo un nuovo sistema per il calcolo degli anni bisestili. Nel calendario gregoriano, un anno è bisestile se è divisibile per 4, ma non per 100, a meno che non sia anche divisibile per 400. Ciò significa che anni come 1700, 1800 e 1900 non sono anni bisestili, ma 1600 e 2000 lo sono.
Sintassi
gregoriantojd(int $month, int $day, int $year): intAccetta tre argomenti interi nell'ordine mese, giorno, anno — si noti che il mese viene prima del giorno:
$month— il mese, da1(gennaio) a12(dicembre).$day— il giorno del mese, da1a31.$year— l'anno. L'intervallo valido è da-4714a9999. L'anno0non è valido.
La funzione restituisce il conteggio dei giorni giuliani come intero, oppure 0 se la data è fuori dall'intervallo.
Cos'è un Conteggio dei Giorni Giuliani?
Il conteggio dei giorni giuliani è un modo per rappresentare qualsiasi data di calendario come un singolo intero sempre crescente. Il conteggio parte da mezzogiorno del 1° gennaio 4713 a.C. (nel calendario giuliano proletto). Poiché ogni data diventa un numero, è possibile trovare il numero di giorni tra due date con una semplice sottrazione, indipendentemente da mesi, anni bisestili o confini di calendario — ed è esattamente per questo che astronomi e formati di dati scientifici lo utilizzano.
Conversione di una Data Gregoriana
Per convertire il 14 febbraio 2023 in un conteggio dei giorni giuliani, passare il mese, il giorno e l'anno:
$jd = gregoriantojd(2, 14, 2023);
echo $jd; // 2459990La variabile $jd contiene ora 2459990, il conteggio dei giorni giuliani per quella data.
Gestione delle date non valide
Se la data è fuori dall'intervallo supportato, gregoriantojd() restituisce 0 anziché generare un errore. Trattare un risultato 0 come "input non valido":
$jd = gregoriantojd(13, 40, 2023); // month 13, day 40 — invalid
if ($jd === 0) {
echo "Invalid date.";
}Conversione inversa
Per fare il contrario — da un conteggio dei giorni giuliani a una stringa di data gregoriana — utilizzare la funzione inversa jdtogregorian():
$jd = gregoriantojd(2, 14, 2023);
echo jdtogregorian($jd); // 2/14/2023Quando Utilizzare Questa Funzione?
Utilizzare gregoriantojd() quando è necessario:
- Contare i giorni tra due date sottraendo i rispettivi conteggi dei giorni giuliani.
- Convertire tra sistemi di calendario (ad esempio, da gregoriano a giuliano o a date ebraiche) utilizzando le altre funzioni Calendar di PHP.
- Trovare il giorno della settimana per una data con
jddayofweek().
Per il lavoro applicativo ordinario — analisi dell'input dell'utente, formattazione dell'output, aggiunta di intervalli — preferire la classe DateTime, che è compatibile con i fusi orari e molto più comoda.
Conclusione
gregoriantojd() converte una data gregoriana in un singolo intero del conteggio dei giorni giuliani, rendendo semplici i calcoli sulle date e le conversioni tra calendari. Ricordarsi dell'ordine degli argomenti con il mese per primo, verificare la restituzione di 0 per input non validi e abbinarla a jdtogregorian() per la conversione inversa. Per la gestione generale delle date, la classe DateTime rimane lo strumento più adatto.