Appliquer la notion
Le calendrier révolutionnaire est créé pendant la Révolution française et utilisé jusqu'en 1806. Il comporte 12 mois que l'on peut à peu près convertir comme cela :
Vendémiaire (22 septembre ~ 21 octobre)
Brumaire (22 octobre ~ 21 novembre)
Frimaire (22 novembre ~ 21 décembre)
Nivôse (22 décembre ~ 20 janvier)
Pluviôse (21 janvier ~ 19 février)
Ventôse (20 février ~ 21 mars)
Germinal (22 mars ~ 19 avril)
Floréal (20 avril ~ 19 mai)
Prairial (20 mai ~ 18 juin)
Messidor (19 juin ~ 18 juillet)
Thermidor (19 juillet ~ 17 août)
Fructidor (18 août ~ 17 septembre)
Les jours situés entre Fructidor et Vendémiaire sont appelés les Jours supplémentaires.
Question
Réaliser le programme JavaScript qui permet d'afficher le mois dans le calendrier révolutionnaire correspondant à la date du jour.
Indice
Utiliser des structures conditionnelles if
avec des opérateurs booléens &&
et ||
pour définir le bon mois en fonction du jour et du mois courant.
Indice
On peut récupérer le jour et le mois d'une date avec les méthodes getDay()
et getMonth()
.
Indice
Supposons que le jour soit stocké dans la variable day
et le mois dans la variable month
. On pourra vérifier si cette date est comprise entre le 22 septembre et le 21 octobre avec la condition suivante :
// Septembre est représenté par 8 et non par 9
(day >= 22 && month == 8) || (day <= 21 && month == 9)
Solution
Chaque numéro de mois correspond à un nom, en faisant attention au fait que la numérotation commence à 0 en JavaScript.
/** JavaScript */
const today = new Date()
const day = today.getDate()
const month = today.getMonth()
let revolutionaryMonth
if((day >= 22 && month == 8) || (day <= 21 && month == 9)) {
revolutionaryMonth = 'Vendémiaire'
} else if((day >= 22 && month == 9) || (day <= 21 && month == 10)) {
revolutionaryMonth = 'Brumaire'
} else if((day >= 22 && month == 10) || (day <= 21 && month == 11)) {
revolutionaryMonth = 'Frimaire'
} else if((day >= 22 && month == 11) || (day <= 20 && month == 0)) {
revolutionaryMonth = 'Nivôse'
} else if((day >= 21 && month == 0) || (day <= 19 && month == 1)) {
revolutionaryMonth = 'Pluviôse'
} else if((day >= 20 && month == 1) || (day <= 21 && month == 2)) {
revolutionaryMonth = 'Ventôse'
} else if((day >= 22 && month == 2) || (day <= 19 && month == 3)) {
revolutionaryMonth = 'Germinal'
} else if((day >= 20 && month == 3) || (day <= 19 && month == 4)) {
revolutionaryMonth = 'Floréal'
} else if((day >= 20 && month == 4) || (day <= 18 && month == 5)) {
revolutionaryMonth = 'Plairial'
} else if((day >= 19 && month == 5) || (day <= 18 && month == 6)) {
revolutionaryMonth = 'Messidor'
} else if((day >= 19 && month == 6) || (day <= 17 && month == 7)) {
revolutionaryMonth = 'Thermidor'
} else if((day >= 18 && month == 7) || (day <= 17 && month == 8)) {
revolutionaryMonth = 'Fructidor'
} else {
revolutionaryMonth = 'Jours supplémentaires'
}
console.log(revolutionaryMonth)