Months v1 Gregorien/Republicain
avec boucle for
by toubia95
HTML
<input type="text" name="letters" id="letters" value="27 frimaire an XI" placeholder="Année en toutes lettres">
<button type="button" id="button">=></button>
<input type="text" name="numbers" id="numbers">
<p>Exemples :
<ul>
<li>28 août 2015</li>
<li>28 déc 2010</li>
<li>6 fevr. 2007</li>
<li>28 Xbre 1789</li>
<li>10/12/2013</li>
<li>23-09-2006</li>
<li>12.06.2014</li>
<li>23//08.-2013</li>
<li>27 frimaire an XI</li>
<li>24 vendemiaire an 8</li>
<li>La loi du 18 germinal an III instaura en France l'usage du système métrique.</li>
<li>Le 18 Brumaire an III préluda au Consulat.</li>
<li>Le 9 Thermidor an III.</li>
<li>La journée du 9 thermidor de l'an III fut fatale à Robespierre.</li>
<li>le Sextidi, 6 messidor, décade 28, de l'an I.</li>
<li>le Sextidi, 6 messidor, décade 28, an I.</li>
</ul>
</p>
CSS
/*
- Commencer par vérifier si ce n'est pas une date républicaine, puis sinon, transformer en gregorienne
\s((\d{1,2})(er)?)\s((vend(é|e)miaire)|(brumaire)|(frimaire)|(niv(ô|o)se)|(pluvi(ô|o)se)|(vent(ô|o)se)|(germinal)|(flor(é|e)al)|(prairial)|(messidor)|(thermidor)|(fructidor)|(san(s-)?culottides)|(jour(s)?\scompl(é|e)mentaire(s)?))\s(an)\s([XVI]{1,4}|\d{1,2})
*/
#letters {
width: 200px;
}
#numbers {
width: 300px;
}
JavaScript
$('#button').click(function () {
var selection = $('#letters').val();
if (selection.match(/\Wan\s/gi)) {
//if( /\Wan\s/gi.test(selection) ) { // moins rapide que match dans ce cas
$("#numbers").val(republicain(selection));
} else {
$("#numbers").val(gregorien(selection));
}
});
var gregorien = function (str) {
var array = {
"jan(v)?(\\.)?(ier)?": "/1/",
"f(é|e)v(r)?(\\.)?(ier)?": "/2/",
"mar(s|\\.)?": "/3/",
"avr(il|\\.)?": "/4/",
"mai": "/5/",
"ju(i)?n": "/6/",
"ju(i)?l(\\.)?(let)?": "/7/",
"ao(u|û)(t|\\.)?": "/8/",
"sep(t)?(\\.)?(embre)?": "/9/",
"7bre": "/9/",
"oct(obre|\\.)?": "/10/",
"8bre": "/10/",
"nov(embre|\\.)?": "/11/",
"9bre": "/11/",
"d(é|e)c(embre|\\.)?": "/12/",
"Xbre": "/12/",
//"\\+$": "", //addition for centuries
"[^-()\\d/*+.]": ""
};
for (var val in array) {
str = str.replace(new RegExp(val, "gi"), array[val]);
}
var res = str.split(/[\/\.-]{1,}/gi);
return new Date(res[2], res[1] - 1, res[0]);
};
var republicain = function (str) {
var array = {
"vend(é|e)miaire": "/1/",
"brumaire": "/2/",
"frimaire": "/3/",
"niv(ô|o)se": "/4/",
"pluvi(ô|o)se": "/5/",
"vent(ô|o)se": "/6/",
"germinal": "/7/",
"flor(é|e)al": "/8/",
"prairial": "/9/",
"messidor": "/10/",
"thermidor": "/11/",
"fructidor": "/12/",
"san(s-)?culottide(s)?": "/13/",
"jour(s)?\\scompl(é|e)mentaire(s)?": "/13/",
"an\\sXIII": "13",
"an\\sVIII": "8",
"an\\sXIV": "14",
"an\\sXII": "12",
"an\\sVII": "7",
"an\\sIII": "3",
"an\\sIX": "9",
"an\\sIV": "4",
...