jdtofrench()
La funzione jdtofrench() di PHP converte un conteggio di giorni giuliani in una data del Calendario Rivoluzionario Francese.
Introduzione
Il Calendario Rivoluzionario Francese, noto anche come Calendario Repubblicano, fu creato durante la Rivoluzione Francese e fu utilizzato in Francia dal 1793 al 1805. Fu progettato per sostituire il calendario gregoriano ed era destinato a essere più razionale e scientifico. Il calendario si basava sull'idea del tempo decimale e consisteva in 12 mesi di 30 giorni ciascuno, con l'aggiunta di 5 o 6 giorni alla fine dell'anno per compensare i giorni extra.
Il Conteggio dei Giorni Giuliani, d'altra parte, è un sistema di conteggio dei giorni utilizzato in astronomia. È definito come il numero di giorni trascorsi dal mezzogiorno del 1° gennaio 4713 a.C. (calendario giuliano). PHP include una funzione nativa jdtofrench() nell'estensione Calendar per convertire il Conteggio dei Giorni Giuliani nel Calendario Rivoluzionario Francese, gestendo automaticamente le regole degli anni bisestili del calendario.
Formula di Conversione
Per convertire il Conteggio dei Giorni Giuliani in una data del Calendario Rivoluzionario Francese, utilizziamo il seguente algoritmo:
J = JDC - 2375839
N = J mod 365
if N < 360 then
Q = floor(N / 30) + 1
R = (N mod 30) + 1
else
Q = 13
R = N - 359
end ifDove:
- J è il numero di giorni trascorsi dall'inizio del Calendario Rivoluzionario Francese (22 settembre 1792)
- N è il numero del giorno nell'anno corrente (0-364)
- Q è il numero del mese (1-12 per i 12 mesi, 13 per i giorni complementari)
- R è il numero del giorno nel mese (1-30) o il giorno complementare (1-5/6)
Spiegazione della Formula
La formula per convertire il Conteggio dei Giorni Giuliani in una data del Calendario Rivoluzionario Francese è semplice una volta scomposta. Esaminiamo ogni passaggio.
Passaggio 1: Calcolare J e N
Prima, calcola J sottraendo 2375839 (il Conteggio dei Giorni Giuliani del 22 settembre 1792, l'epoca del calendario) dal Conteggio dei Giorni Giuliani target. Poi, trova N, il numero del giorno all'interno del ciclo corrente di 365 giorni:
J = JDC - 2375839
N = J mod 365Passaggio 2: Calcolare Q e R
Il calendario Rivoluzionario Francese divide l'anno in 12 mesi di esattamente 30 giorni, seguiti da 5 o 6 giorni complementari. Determiniamo il mese (Q) e il giorno (R) usando queste regole:
if N < 360 then
Q = floor(N / 30) + 1
R = (N mod 30) + 1
else
Q = 13
R = N - 359
end ifSe N è minore di 360, la data cade in uno dei 12 mesi. Dividiamo N per 30 per trovare l'indice del mese e aggiungiamo 1. Il resto fornisce l'indice del giorno, anch'esso adeguato aggiungendo 1. Se N è 360 o maggiore, la data cade nel periodo dei giorni complementari (Sans-culottides), al quale viene assegnato il numero di mese 13.
Sintassi
jdtofrench(int $julian_day): string| Parametro | Descrizione |
|---|---|
$julian_day | Il numero intero del Conteggio dei Giorni Giuliani da convertire. |
Valore restituito: una stringa nel formato "mese/giorno/anno", dove ogni parte è un numero (ad esempio "6/12/1"). La funzione restituisce "0/0/0" per qualsiasi Conteggio dei Giorni Giuliani al di fuori dell'intervallo valido del calendario (dal 22 settembre 1792 al 22 settembre 1806).
Esempio
Convertiamo il Conteggio dei Giorni Giuliani 2376000 in una data del Calendario Rivoluzionario Francese.
Prima, calcoliamo J e N:
J = 2376000 - 2375839 = 161
N = 161 mod 365 = 161Successivamente, calcoliamo Q e R:
N < 360, so:
Q = floor(161 / 30) + 1 = 5 + 1 = 6
R = (161 mod 30) + 1 = 11 + 1 = 12Quindi il risultato è mese 6, giorno 12, anno 1. Usando la tabella dei mesi di seguito, il mese 6 è Ventôse, dando 12 Ventôse, Anno 1.
Implementazione PHP
PHP fornisce una funzione nativa jdtofrench() nell'estensione Calendar, che gestisce automaticamente la conversione e la logica dei giorni complementari. Restituisce una stringa numerica "mese/giorno/anno":
// Requires the Calendar extension
echo jdtofrench(2376000); // Outputs: 6/12/1I tre numeri corrispondono esattamente a Q (mese), R (giorno) e all'anno calcolati sopra. Per trasformarli nel nome storico del mese, dividi la stringa e cerca il mese in una tabella:
$frenchMonths = [
1 => "Vendémiaire", 2 => "Brumaire", 3 => "Frimaire",
4 => "Nivôse", 5 => "Pluviôse", 6 => "Ventôse",
7 => "Germinal", 8 => "Floréal", 9 => "Prairial",
10 => "Messidor", 11 => "Thermidor", 12 => "Fructidor",
13 => "Sans-culottides",
];
list($month, $day, $year) = explode("/", jdtofrench(2376000));
echo "{$day} " . $frenchMonths[$month] . ", Year {$year}"; // 12 Ventôse, Year 1Per le date al di fuori dell'intervallo valido del calendario, la funzione restituisce "0/0/0", quindi verifica quel valore sentinella invece di supporre una data reale:
$jdc = 2376000;
$result = jdtofrench($jdc);
if ($result !== "0/0/0") {
echo "French Republican date: {$result}";
} else {
echo "Date is outside the French Revolutionary Calendar range.";
}Funzioni Correlate
L'estensione Calendar fornisce convertitori corrispondenti che puoi combinare con jdtofrench():
- frenchtojd() — l'inverso: data del Calendario Repubblicano Francese convertita in un Conteggio dei Giorni Giuliani.
- jdtogregorian() — Conteggio dei Giorni Giuliani in una data gregoriana.
- jdtojulian() — Conteggio dei Giorni Giuliani in una data del calendario giuliano.
- jddayofweek() — il giorno della settimana per un dato Conteggio dei Giorni Giuliani.
Conclusione
In conclusione, PHP fornisce una funzione nativa jdtofrench() nell'estensione Calendar per convertire i Conteggi dei Giorni Giuliani in date del Calendario Rivoluzionario Francese. Utilizzando questa funzione nativa, puoi tradurre accuratamente le date storiche tenendo conto automaticamente delle regole degli anni bisestili e dei giorni complementari del calendario.