W3docs

frenchtojd()

Scopri come usare frenchtojd() in PHP per convertire date del calendario repubblicano francese in Julian Day Count, con esempi pratici.

Introduzione

La funzione PHP frenchtojd() converte una data del calendario repubblicano francese in un Julian Day Count — un intero univoco che identifica un giorno del calendario. Questa pagina spiega il significato di questi due termini, come chiamare la funzione, il significato dei valori restituiti e i casi limite più comuni.

Un Julian Day Count (JDC) è il conteggio continuo dei giorni a partire dall'inizio del periodo giuliano: mezzogiorno UTC del 1° gennaio 4713 a.C. Essendo un semplice intero, rappresenta il formato "pivot" comune che PHP utilizza per convertire tra calendari — si converte il calendario A in un giorno giuliano, quindi quel giorno giuliano viene convertito nel calendario B. È ampiamente utilizzato anche in astronomia e in qualsiasi campo che richieda una misurazione del tempo continua e indipendente dal calendario.

Il calendario repubblicano francese fu usato in Francia dal 1793 al 1805, introdotto dalla Rivoluzione Francese per sostituire il calendario gregoriano. Ha 12 mesi di 30 giorni ciascuno, suddivisi in tre settimane di dieci giorni (décades), più 5 o 6 "giorni complementari" alla fine dell'anno. Gli anni sono contati dalla fondazione della Repubblica (Anno I, Anno II, …), convenzionalmente scritti con numeri romani.

Utilizzo della funzione integrata frenchtojd() di PHP

Per convertire una data del calendario repubblicano francese in un giorno giuliano in PHP, chiama la funzione nativa frenchtojd(). PHP gestisce internamente la matematica del calendario, quindi non è necessario implementare l'algoritmo manualmente.

Nota: questa funzione richiede che l'estensione calendar sia abilitata. Verifica con extension_loaded('calendar'); se restituisce false, abilita l'estensione nel tuo php.ini.

<?php

$jd = frenchtojd($month, $day, $year);

?>

La funzione accetta tre parametri interi e restituisce un int:

  • $month: il numero del mese (1–13). I mesi da 1 a 12 sono i mesi regolari di 30 giorni (Vendémiaire … Fructidor); il mese 13 contiene i giorni complementari.
  • $day: il giorno del mese (da 1 a 30 per i mesi da 1 a 12, da 1 a 6 per il mese 13).
  • $year: l'anno della Repubblica Francese, ad esempio 1 per l'Anno I.

L'intervallo valido va approssimativamente dal 1° Vendémiaire Anno 1 alla fine dell'Anno 14. Qualsiasi data al di fuori dell'intervallo supportato — incluso frenchtojd(0, 0, 0) — restituisce 0. Verifica sempre un risultato 0 prima di utilizzare il valore.

Esempio di utilizzo

Passa il mese, il giorno e l'anno della data francese come parametri:

<?php

$jd = frenchtojd(12, 22, 1);
echo $jd; // Output: 2376191

?>

Qui convertiamo il 22 Fruttidoro, Anno I (mese 12, giorno 22, anno 1) nel suo Julian Day Count, 2376191. Quel giorno giuliano corrisponde all'8 settembre 1793 nel calendario gregoriano.

Conversione verso altri calendari

Poiché il risultato è un giorno giuliano, puoi passarlo a qualsiasi funzione jdto*() per esprimere lo stesso giorno in un altro calendario. Questo è il motivo più comune per chiamare frenchtojd():

<?php

$jd = frenchtojd(12, 22, 1);     // 22 Fructidor, Year I → 2376191

echo jdtogregorian($jd), "\n";   // Output: 9/8/1793
echo jddayofweek($jd, 1), "\n";  // Output: Sunday

?>

Per convertire nel senso inverso, usa jdtofrench(), l'inversa di frenchtojd().

Errori comuni

  • L'ordine degli argomenti è month, day, year — non l'ordine giorno-mese-anno usato nelle date francesi quotidiane. Scambiare i primi due è il bug più frequente.
  • Un risultato 0 significa "non valido o fuori intervallo", non "è stato generato un errore." La funzione non lancia un'eccezione, quindi valida il risultato tu stesso.
  • I giorni complementari si trovano nel mese 13, non aggiunti al mese 12. Usa frenchtojd(13, 1, $year) fino a frenchtojd(13, 6, $year) per gestirli.
  • L'estensione calendar non è sempre abilitata, specialmente nelle immagini Docker minimali. Proteggi il codice portabile con extension_loaded('calendar').

Funzioni correlate

  • jdtofrench() — l'inversa: Julian Day → data del calendario repubblicano francese.
  • gregoriantojd() — converte una data gregoriana in un giorno giuliano.
  • juliantojd() — converte una data del calendario giuliano (prolettico) in un giorno giuliano.
  • jddayofweek() — ottieni il giorno della settimana per un giorno giuliano.

Conclusione

frenchtojd() rende la conversione delle date del calendario repubblicano francese in giorni giuliani una singola chiamata di funzione. Ricorda l'ordine degli argomenti month, day, year, tratta un risultato 0 come "fuori intervallo" e usa il giorno giuliano risultante come ponte verso altri calendari tramite la famiglia jdto*().

Pratica

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