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 :

1
// Septembre est représenté par 8 et non par 9
2
(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.

1
/** JavaScript */
2
const today = new Date()
3
const day = today.getDate()
4
const month = today.getMonth()
5
let revolutionaryMonth
6
7
if((day >= 22 && month == 8) || (day <= 21 && month == 9)) {
8
  revolutionaryMonth = 'Vendémiaire'
9
} else if((day >= 22 && month == 9) || (day <= 21 && month == 10)) {
10
  revolutionaryMonth = 'Brumaire'
11
} else if((day >= 22 && month == 10) || (day <= 21 && month == 11)) {
12
  revolutionaryMonth = 'Frimaire'
13
} else if((day >= 22 && month == 11) || (day <= 20 && month == 0)) {
14
  revolutionaryMonth = 'Nivôse'
15
} else if((day >= 21 && month == 0) || (day <= 19 && month == 1)) {
16
  revolutionaryMonth = 'Pluviôse'
17
} else if((day >= 20 && month == 1) || (day <= 21 && month == 2)) {
18
  revolutionaryMonth = 'Ventôse'
19
} else if((day >= 22 && month == 2) || (day <= 19 && month == 3)) {
20
  revolutionaryMonth = 'Germinal'
21
} else if((day >= 20 && month == 3) || (day <= 19 && month == 4)) {
22
  revolutionaryMonth = 'Floréal'
23
} else if((day >= 20 && month == 4) || (day <= 18 && month == 5)) {
24
  revolutionaryMonth = 'Plairial'
25
} else if((day >= 19 && month == 5) || (day <= 18 && month == 6)) {
26
  revolutionaryMonth = 'Messidor'
27
} else if((day >= 19 && month == 6) || (day <= 17 && month == 7)) {
28
  revolutionaryMonth = 'Thermidor'
29
} else if((day >= 18 && month == 7) || (day <= 17 && month == 8)) {
30
  revolutionaryMonth = 'Fructidor'
31
} else {
32
  revolutionaryMonth = 'Jours supplémentaires'
33
}
34
35
console.log(revolutionaryMonth)