W3docs

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 if

Dove:

  • 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 365

Passaggio 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 if

Se 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
ParametroDescrizione
$julian_dayIl 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 = 161

Successivamente, calcoliamo Q e R:

N < 360, so:
Q = floor(161 / 30) + 1 = 5 + 1 = 6
R = (161 mod 30) + 1 = 11 + 1 = 12

Quindi 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/1

I 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 1

Per 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.

Pratica

Pratica
Cosa fa la funzione jdtofrench() in PHP?
Cosa fa la funzione jdtofrench() in PHP?
Was this page helpful?