PHP 8.4.0 RC4 available for testing

jdtofrench

(PHP 4, PHP 5, PHP 7, PHP 8)

jdtofrenchConvertit le nombre de jours du calendrier Julien en date du calendrier français républicain

Description

jdtofrench(int $julian_day): string

Convertit le nombre de jours du calendrier julien en date du calendrier français républicain.

Liste de paramètres

julian_day

Le numéro du jour Julien, sous la forme d'un entier

Valeurs de retour

La date française républicaine, sous la forme d'une chaîne de caractères "mois/jour/année".

Voir aussi

  • frenchtojd() - Convertit une date du calendrier français républicain en nombre de jours du calendrier Julien
  • cal_from_jd() - Convertit le nombre de jours Julien en un calendrier spécifique

+add a note

User Contributed Notes 4 notes

up
2
pieterc dot depraetere at ugent dot be
14 years ago
If you want to convert a date later than September 22nd 1806, you could use this function. It's a bit crude and due to the fact the original function terminates in the middle of 1806, it uses 1805 as it's 'terminus post quem'.
<?php
function extended_jdtofrench ($juliandate) {
if (
$juliandate > 2380945) {
// jdtofrench () only accepts dates until september 1806
$gregorian_date = jdtogregorian ($juliandate);
$temp = explode ('/', $gregorian_date);
$year = $temp[2];
$juliandate = gregoriantojd ($temp[0], $temp[1], 1805);
$republican_date = jdtofrench ($juliandate);
$republican_date = explode ('/', $republican_date);
$diff = $year - 1805;
$republican_date[2] = $republican_date[2] + $diff;
} else {
$republican_date = jdtofrench ($juliandate);
}
return
$republican_date;
}
?>
up
1
squenz at titania dot bottoms-dream dot de
18 years ago
Here is a small piece of code to obtain the string data for a correctly converted gregorian date:

<?php
$arDateFrench
= gregorian2FrenchDateArray(11, 9, 1799) ;

echo
$arDateFrench[1] . " " . $arDateFrench[0] . " " . $arDateFrench[2] ;

/* the output will be:
18 Brumaire VIII

*/

function gregorian2FrenchDateArray($m, $d, $y)
{

$julian_date = gregoriantojd($m, $d, $y);
$french = jdtofrench($julian_date);
if(
$french == "0/0/0")
return
"" ;

$arD = split("/", $french) ;

// get the month name
$monthname = FrenchMonthNames($arD[0]) ;

/* convert the year number to roman digits (as most historians do and documents of the time did */
$stryear = decrom($arD[2]) ;
return array(
$monthname, $arD[1], $stryear ) ;
}

function
FrenchMonthNames($mo)
{
/* The names have been invented by Fabre d'Églantine, a second or rather third rank poet
of primarily pastoral poems, with each name referring to the respective period in the agricultural year; e.g. "Vendémiaire" (approx. September) is derived from "vendange" ("harvest"), "Brumaire" (Ocotober/November) from "brume" ("fog") and so on ... */


$arMo = array("Vendémiaire",
"Brumaire",
"Frimaire",
"Nivôse",
"Pluviôse",
"Ventôse",
"Germinal",
"Floréal",
"Prairial",
"Messidor",
"Thermidor",
"Fructidor",
"Sansculottide") ;

if(
$mo < count($arMo)+1)
return
$arMo[$mo-1] ;

}

function
decrom($dec){
$digits=array(
1 => "I",
4 => "IV",
5 => "V",
9 => "IX",
10 => "X",
40 => "XL",
50 => "L",
90 => "XC",
100 => "C",
400 => "CD",
500 => "D",
900 => "CM",
1000 => "M"
);
krsort($digits);
$retval="";
foreach(
$digits as $key => $value){
while(
$dec>=$key){
$dec-=$key;
$retval.=$value;
}
}
return
$retval;
}
?>
up
0
popy-dev
6 years ago
Also note that there are few date converters handling French calendar outside the jdtofrench covered range.
up
-2
serged at noos dot fr
21 years ago
Very limited function:

(extract from source of 4.3.3)
These routines only convert dates in years 1 through 14 (Gregorian dates 22 September 1792 through 22 September 1806). This more than covers the period when the calendar was in use.

Pour les français :
Ces routines ne converitssent les dates que de l'an 1 à 14 (du 22 septembre 1792 au 22 septembre 1806). Cela couvre plus que la période pendant laquelle le calendrier à été utilisé.
To Top