Calcule le décalage horaire en France (+1 en été, +2 en hiver) à partir d'une heure UTC et d'une date.
Fork of FrenchTime by
FrenchTime.h@2:3c327ecd5e11, 2016-11-23 (annotated)
- Committer:
- Marcus_2B
- Date:
- Wed Nov 23 14:29:18 2016 +0000
- Revision:
- 2:3c327ecd5e11
- Parent:
- 1:23fcffaa257c
Ajout prise en compte ann?es bissextiles
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Marcus_2B | 0:2ef6fb83757c | 1 | #ifndef MBED_FRENCH_TIME_H |
Marcus_2B | 0:2ef6fb83757c | 2 | #define MBED_FRENCH_TIME_H |
Marcus_2B | 0:2ef6fb83757c | 3 | |
Marcus_2B | 0:2ef6fb83757c | 4 | #include "mbed.h" |
Marcus_2B | 0:2ef6fb83757c | 5 | |
Marcus_2B | 0:2ef6fb83757c | 6 | #define UTC_TIME_OFFSET 1 |
Marcus_2B | 0:2ef6fb83757c | 7 | #define DAYS_IN_MARS 31 |
Marcus_2B | 0:2ef6fb83757c | 8 | |
Marcus_2B | 0:2ef6fb83757c | 9 | |
Marcus_2B | 0:2ef6fb83757c | 10 | |
Marcus_2B | 0:2ef6fb83757c | 11 | /** |
Marcus_2B | 2:3c327ecd5e11 | 12 | * Classe qui calcule le décalage horaire en France (+1 en été, +2 en hiver) à partir d'une date |
Marcus_2B | 2:3c327ecd5e11 | 13 | * Le passage à l'heure d'été est réalisé le dernier dimanche de mars à 00:00 |
Marcus_2B | 2:3c327ecd5e11 | 14 | * Le passage à l'heure d'hiver est réalisé le dernier dimanche d'octobre à 00:00 |
Marcus_2B | 0:2ef6fb83757c | 15 | */ |
Marcus_2B | 0:2ef6fb83757c | 16 | class FrenchTime |
Marcus_2B | 0:2ef6fb83757c | 17 | { |
Marcus_2B | 0:2ef6fb83757c | 18 | |
Marcus_2B | 0:2ef6fb83757c | 19 | public: |
Marcus_2B | 0:2ef6fb83757c | 20 | |
Marcus_2B | 0:2ef6fb83757c | 21 | /** Mois de l'année */ |
Marcus_2B | 0:2ef6fb83757c | 22 | enum month {JANVIER = 1 /**<Le mois de Janvier = 1*/, FEVRIER /**< 2 */, MARS /**< 3 */, AVRIL /**< 4 */, MAI /**< 5 */, JUIN /**< 6 */, JUILLET /**< 7 */, AOUT /**< 8 */, SEPTEMBRE /**< 9 */, OCTOBRE /**< 10 */, NOVEMBRE /**< 11 */, DECEMBRE /**< 12 */ }; |
Marcus_2B | 0:2ef6fb83757c | 23 | |
Marcus_2B | 0:2ef6fb83757c | 24 | /** Jours de la semaine */ |
Marcus_2B | 0:2ef6fb83757c | 25 | enum dayOfWeek {DIM = 0 /**<Dimanche = 0 */, LUN /**< 1 */, MAR /**< 2 */, MER /**< 3 */, JEU /**< 4 */, VEN /**< .5 */, SAM /**<Samedi = 6 */ }; |
Marcus_2B | 0:2ef6fb83757c | 26 | |
Marcus_2B | 0:2ef6fb83757c | 27 | |
Marcus_2B | 0:2ef6fb83757c | 28 | /** |
Marcus_2B | 0:2ef6fb83757c | 29 | * Methode qui revoie le décalage horaire de l'heure francaise par rapport à l'heure UTC |
Marcus_2B | 0:2ef6fb83757c | 30 | * @param day date du jour |
Marcus_2B | 0:2ef6fb83757c | 31 | * @param month mois |
Marcus_2B | 0:2ef6fb83757c | 32 | * @param year année |
Marcus_2B | 0:2ef6fb83757c | 33 | * @returns |
Marcus_2B | 0:2ef6fb83757c | 34 | * uint8_t 1 (hiver) |
Marcus_2B | 0:2ef6fb83757c | 35 | * uint8_t 2 (été) |
Marcus_2B | 0:2ef6fb83757c | 36 | */ |
Marcus_2B | 0:2ef6fb83757c | 37 | static uint8_t frenchTimeOffset(uint8_t day, uint8_t month, int year); |
Marcus_2B | 0:2ef6fb83757c | 38 | |
Marcus_2B | 0:2ef6fb83757c | 39 | |
Marcus_2B | 0:2ef6fb83757c | 40 | /** |
Marcus_2B | 0:2ef6fb83757c | 41 | * Methode qui renvoie la date du dernier dimanche d'un mois |
Marcus_2B | 0:2ef6fb83757c | 42 | * @param month mois |
Marcus_2B | 0:2ef6fb83757c | 43 | * @param year année |
Marcus_2B | 0:2ef6fb83757c | 44 | * @return uin8_t jour du mois de 1 à 31 |
Marcus_2B | 0:2ef6fb83757c | 45 | */ |
Marcus_2B | 0:2ef6fb83757c | 46 | static uint8_t lastSundayOfMonth(uint8_t month, int year); |
Marcus_2B | 0:2ef6fb83757c | 47 | |
Marcus_2B | 0:2ef6fb83757c | 48 | |
Marcus_2B | 0:2ef6fb83757c | 49 | /** |
Marcus_2B | 0:2ef6fb83757c | 50 | * Methode qui renvoie le jour de la semaine correspondant à une date |
Marcus_2B | 0:2ef6fb83757c | 51 | * @param day date du jour |
Marcus_2B | 0:2ef6fb83757c | 52 | * @param month mois |
Marcus_2B | 0:2ef6fb83757c | 53 | * @param year année |
Marcus_2B | 0:2ef6fb83757c | 54 | * @return uin8_t jour de la semaine de 0(dimanche) à 6(samedi) |
Marcus_2B | 0:2ef6fb83757c | 55 | */ |
Marcus_2B | 0:2ef6fb83757c | 56 | static uint8_t dayOfWeek(uint8_t day, uint8_t month, int year); |
Marcus_2B | 0:2ef6fb83757c | 57 | }; |
Marcus_2B | 0:2ef6fb83757c | 58 | |
Marcus_2B | 0:2ef6fb83757c | 59 | #endif |