From 5aac474602a93327d23a88e689696b178c3d5937 Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sun, 13 Nov 2016 18:26:24 +0100 Subject: [PATCH] Commit initial --- README.md | 19 ++++ republicandate.php | 241 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 260 insertions(+) create mode 100644 README.md create mode 100644 republicandate.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..3b7610a --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# Republicain-Calendar-PHP + +Juste un petit convertisseur de date en calendrier républicain pour ceux qui le souhaite. Le script peut afficher soit une date minimale (style 23 Brumaire, an 225) soit une date plus complexe (Tridi, 23 Brumaire, an 225 - Garance). + +Il utilise le système Romme pour calculer la date. + +## Comment l'utiliser. + +````php +include(republicandate.php); +echo gregorian2FrenchDateString($m,$d,$y); //affiche la date complète + la plante du jour. +echo gregorian2FrenchDateStringShort($m,$d,$y); //affiche la date réduite +```` + +## Crédits + +- extended_jdtofrench par [pieterc](http://php.net/manual/en/function.jdtofrench.php) + +- une grande autre partie du script par [squenz](http://php.net/manual/en/function.jdtofrench.php) diff --git a/republicandate.php b/republicandate.php new file mode 100644 index 0000000..eda5614 --- /dev/null +++ b/republicandate.php @@ -0,0 +1,241 @@ + gregoriantojd (9, 22, 1805)) or ($debugCalendar==1)) { // Ce calcul prend le relais à partir du 23 septembre 1805 + + // On commence par déclarer les variables, qui nous servirons à calculer ou on en est rendu. + $franciade_simple_nbr_jours = (3*365)+366; + $siecle_simple_nbr_jour = (25*$franciade_simple_nbr_jours)-1; + $siecle_quatrieme_nbr_jour = 25*$franciade_simple_nbr_jours; + $franciade_seculaire_nbr_jours = 3*$siecle_simple_nbr_jour+$siecle_quatrieme_nbr_jour; + $franciade_millenaire_nbr_jours = (10*$franciade_seculaire_nbr_jours)-1; + + + + // On obtien le jour courrant par rapport au début du calendrier révolutionaire + $frenchdate = $juliandate - gregoriantojd (9, 22, 1792); + + if ($debugCalendar==1) { + echo $frenchdate . " jours se sont écoulés depuis le debut du calendrier revolutionnaire.
"; + } + + // On découpe ce jour courrant suivant les années. + $franciade_millenaire = floor($frenchdate/$franciade_millenaire_nbr_jours); + $frenchdate = $frenchdate % $franciade_millenaire_nbr_jours; + + if ($debugCalendar==1) { + echo $franciade_millenaire . " franciades millénaires ( de " . $franciade_millenaire_nbr_jours . " jours ) se sont écoulées depuis le début du calendrier révolutionnaire. " . $frenchdate . " jours se sont écoulés depuis le début de la franciade millénaire actuelle
"; + } + + $franciade_seculaire = floor($frenchdate/$franciade_seculaire_nbr_jours); + $frenchdate = $frenchdate % $franciade_seculaire_nbr_jours; + + if ($debugCalendar==1) { + echo $franciade_seculaire . " franciades séculaires ( de " . $franciade_seculaire_nbr_jours . " jours ) se sont écoulées depuis le début de la franciade millénaire. " . $frenchdate . " jours se sont écoulé depuis le début de la franciade séculaire actuelle
"; + } + + if ($frenchdate < (3*$siecle_simple_nbr_jour)) { + $siecle = floor($frenchdate/$siecle_simple_nbr_jour); + $frenchdate = $frenchdate % $siecle_simple_nbr_jour; + } else { + $siecle = 3; + $frenchdate = $frenchdate - (3*$siecle_simple_nbr_jour); + } + + if ($debugCalendar==1) { + echo $siecle . " siècles ( de " . $siecle_simple_nbr_jour . " jours ) se sont écoulées depuis le début de la franciade séculaire. " . $frenchdate . " jours se sont écoulé depuis le début du siècle actuel
"; + } + + $franciade_simple = floor($frenchdate/$franciade_simple_nbr_jours); + $frenchdate = $frenchdate % $franciade_simple_nbr_jours; + + if ($debugCalendar==1) { + echo $franciade_simple . " franciades simples ( de " . $franciade_simple_nbr_jours . " jours ) se sont écoulées depuis le début du siècle. " . $frenchdate . " jours se sont écoulé depuis le début de la franciade actuelle
"; + } + + if ($frenchdate < (3*365)) { + $annees = floor($frenchdate/365); + $frenchdate = $frenchdate % 365; + } else { + $annees = 3; + $frenchdate = $frenchdate - (3*365); + } + + if ($debugCalendar==1) { + echo $annees . " années non-sextiles ( de 365 jours ) se sont écoulées depuis le début de la franciade. " . $frenchdate . " jours se sont écoulé depuis le début de l'année
"; + } + + $annees = ($franciade_millenaire*4000)+($franciade_seculaire*400)+($siecle*100)+($franciade_simple*4)+$annees; + $mois = floor($frenchdate/30); + $jours = ($frenchdate % 30); + + if ($debugCalendar==1) { + echo $mois . " mois ( de 30 jours ) se sont écoulées depuis le début de l'année. " . $jours . " jours se sont écoulé depuis le début du mois
"; + } + + // On rajoute à chaque élément un numéro en plus, parce qu'une date ne commence jamais par 0 :) + $annees = $annees+1; + $mois = $mois+1; + $jours = $jours+1; + + $republican_date_string = $mois . "/" . $jours . "/" . $annees; + + } else {// Sinon on utilise le calcul de la fonction normal, qui nous permet d'avoir les valeurs révolutionnaires exactes + $republican_date_string = jdtofrench ($juliandate); + } + return $republican_date_string; +} + +function gregorian2FrenchDateArray($m, $d, $y) +{ + + $julian_date = gregoriantojd($m, $d, $y); + $french = extended_jdtofrench_romme($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 = $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 FrenchDayNames($Day) +{ + /* 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 ... */ + + + $arDay = array("Primidi", + "Duodi", + "Tridi", + "Quartidi", + "Quintidi", + "Sextidi", + "Septidi", + "Octidi", + "Nonidi", + "Décadi") ; + return $arDay[($Day-1) % 10] ; + +} + +function FrenchSaintNames($Month, $Day) { + +$arDay = array('Raisin','Safran','Châtaigne','Colchique','Cheval','Balsamine','Carotte','Amaranthe','Panais','Cuve','Pomme de terre','Immortelle','Potiron','Réséda','Âne','Belle de nuit','Citrouille','Sarrasin','Tournesol','Pressoir','Chanvre','Pêche','Navet','Amaryllis','Bœuf','Aubergine','Piment','Tomate','Orge','Tonneau', 'Pomme','Céleri','Poire','Betterave','Oie','Héliotrope','Figue','Scorsonère','Alisier','Charrue','Salsifis','Mâcre','Topinambour','Endive','Dindon','Chervis','Cresson','Dentelaire','Grenade','Herse','Bacchante','Azerole','Garance','Orange','Faisan','Pistache','Macjonc','Coing','Cormier','Rouleau', 'Raiponce','Turneps','Chicorée','Nèfle','Cochon','Mâche','Chou-fleur','Miel','Genièvre','Pioche','Cire','Raifort','Cèdre','Sapin','Chevreuil','Ajonc','Cyprès','Lierre','Sabine','Hoyau','Érable sucré','Bruyère','Roseau','Oseille','Grillon','Pignon','Liège','Truffe','Olive','Pelle', 'Tourbe','Houille','Bitume','Soufre','Chien','Lave','Terre végétale','Fumier','Salpêtre','Fléau','Granit','Argile','Ardoise','Grès','Lapin','Silex','Marne','Pierre à chaux','Marbre','Van','Pierre à plâtre','Sel','Fer','Cuivre','Chat','Étain','Plomb','Zinc','Mercure','Crible', 'Lauréole','Mousse','Fragon','Perce-neige','Taureau','Laurier tin','Amadouvier','Mézéréon','Peuplier','Coignée','Ellébore','Brocoli','Laurier','Avelinier','Vache','Buis','Lichen','If','Pulmonaire','Serpette','Thlaspi','Thimele','Chiendent','Trainasse','Lièvre','Guède','Noisetier','Cyclamen','Chélidoine','Traîneau', 'Tussilage','Cornouiller','Violier','Troène','Bouc','Asaret','Alaterne','Violette','Marceau','Bêche','Narcisse','Orme','Fumeterre','Vélar','Chèvre','Épinard','Doronic','Mouron','Cerfeuil','Cordeau','Mandragore','Persil','Cochléaria','Pâquerette','Thon','Pissenlit','Sylvie','Capillaire','Frêne','Plantoir', 'Primevère','Platane','Asperge','Tulipe','Poule','Bette','Bouleau','Jonquille','Aulne','Couvoir','Pervenche','Charme','Morille','Hêtre','Abeille','Laitue','Mélèze','Ciguë','Radis','Ruche','Gainier','Romaine','Marronnier','Roquette','Pigeon','Lilas (commun)','Anémone','Pensée','Myrtile','Greffoir', 'Rose','Chêne','Fougère','Aubépine','Rossignol','Ancolie','Muguet','Champignon','Hyacinthe','Râteau','Rhubarbe','Sainfoin','Bâton-d´or','Chamerops','Ver à soie','Consoude','Pimprenelle','Corbeille d´or','Arroche','Sarcloir','Statice','Fritillaire','Bourrache','Valériane','Carpe','Fusain','Civette','Buglosse','Sénevé','Houlette', 'Luzerne','Hémérocalle','Trèfle','Angélique','Canard','Mélisse','Fromental','Martagon','Serpolet','Faux','Fraise','Bétoine','Pois','Acacia','Caille','Œillet','Sureau','Pavot','Tilleul','Fourche','Barbeau','Camomille','Chèvrefeuille','Caille-lait','Tanche','Jasmin','Verveine','Thym','Pivoine','Chariot', 'Seigle','Avoine','Oignon','Véronique','Mulet','Romarin','Concombre','Échalote','Absinthe','Faucille','Coriandre','Artichaut','Girofle','Lavande','Chamois','Tabac','Groseille','Gesse','Cerise','Parc','Menthe','Cumin','Haricot','Orcanète','Pintade','Sauge','Ail','Vesce','Blé','Chalemie', 'Épeautre','Bouillon-blanc','Melon','Ivraie','Bélier','Prêle','Armoise','Carthame','Mûre','Arrosoir','Panic','Salicorne','Abricot','Basilic','Brebis','Guimauve','Lin','Amande','Gentiane','Écluse','Carline','Câprier','Lentille','Aunée','Loutre','Myrte','Colza','Lupin','Coton','Moulin', 'Prune','Millet','Lycoperdon','Escourgeon','Saumon','Tubéreuse','Sucrion','Apocyn','Réglisse','Échelle','Pastèque','Fenouil','Épine vinette','Noix','Truite','Citron','Cardère','Nerprun','Tagette','Hotte','Églantier','Noisette','Houblon','Sorgho','Écrevisse','Bigarade','Verge d´or','Maïs','Marron','Panier'); + +$absDay = (($Month-1)*30)+$Day; + + if($absDay < count($arDay)+1) + return $arDay[$absDay-1]; + +} + +function FrenchSansCullotidesNames($Day) { + + $arSC = array("Jour de la vertu", + "Jour du génie", + "Jour du travail", + "Jour de l'opinion", + "Jour des récompenses", + "Jour de la révolution"); + if($Day < count($arSC)+1) + return $arSC[$Day-1] ; + +} + +function FrenchOrdinalNumber($Day) { + + $arSC = array("Premier", + "Deuxième", + "Troisième", + "Quatrième", + "Cinquième", + "Sixième"); + if($Day < count($arSC)+1) + return $arSC[$Day-1] ; + +} + +function gregorian2FrenchDateString($m,$d,$y) { + + $julian_date = gregoriantojd($m, $d, $y); + $french = extended_jdtofrench_romme($julian_date); + if($french == "0/0/0") + return "" ; + + $arD = split("/", $french) ; + + $monthname = FrenchMonthNames($arD[0]) ; + $dayname = FrenchDayNames($arD[1]); + + if ($arD[0]==13) { + $dayMonthString = FrenchSansCullotidesNames($arD[1]) . ", "; + $saintString = FrenchOrdinalNumber($arD[1]) . " jour des " . $monthname; + } else { + $dayMonthString = $dayname . ", " . $arD[1] . " " . $monthname . ", "; + $saintString = FrenchSaintNames($arD[0],$arD[1]); + } + $yearString = "an " . $arD[2]; + + return $dayMonthString . $yearString . "
" . $saintString . ""; + +} + +function gregorian2FrenchDateStringShort($m,$d,$y) { + + $julian_date = gregoriantojd($m, $d, $y); + $french = extended_jdtofrench_romme($julian_date); + if($french == "0/0/0") + return "" ; + + $arD = split("/", $french) ; + + $monthname = FrenchMonthNames($arD[0]) ; + $dayname = FrenchDayNames($arD[1]); + + if ($arD[0]==13) { + $dayMonthString = FrenchSansCullotidesNames($arD[1]) . ", "; + $saintString = FrenchOrdinalNumber($arD[1]) . " jour des " . $monthname; + } else { + $dayMonthString = $arD[1] . " " . $monthname . ", "; + $saintString = FrenchSaintNames($arD[0],$arD[1]); + } + $yearString = "an " . $arD[2]; + + return $dayMonthString . $yearString; + +} + +?>