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@6:803a1cf4eb73, 2016-11-23 (annotated)
- Committer:
- Marcus_2B
- Date:
- Wed Nov 23 14:46:23 2016 +0000
- Revision:
- 6:803a1cf4eb73
- Parent:
- 5:cf036371055d
Publish 1
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 | 0:2ef6fb83757c | 12 | * Classe qui permet de calculer l'heure locale en France à partir de l'heure UTC provenant d'un GPS par exemple. |
Marcus_2B | 5:cf036371055d | 13 | * Le passage à l'heure d'été est réalisé le dernier dimanche de mars à 00:00 |
Marcus_2B | 5:cf036371055d | 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 | 3:3b689218225e | 36 | * |
Marcus_2B | 4:3fdbc10667a6 | 37 | * @code |
Marcus_2B | 4:3fdbc10667a6 | 38 | * int DecalageHoraire = FrenchTime::frenchTimeOffset(29,10,2016); //return 1 |
Marcus_2B | 4:3fdbc10667a6 | 39 | * int DecalageHoraire = FrenchTime::frenchTimeOffset(30,10,2016); //return 2 |
Marcus_2B | 4:3fdbc10667a6 | 40 | * @endcode |
Marcus_2B | 0:2ef6fb83757c | 41 | */ |
Marcus_2B | 0:2ef6fb83757c | 42 | static uint8_t frenchTimeOffset(uint8_t day, uint8_t month, int year); |
Marcus_2B | 0:2ef6fb83757c | 43 | |
Marcus_2B | 0:2ef6fb83757c | 44 | |
Marcus_2B | 0:2ef6fb83757c | 45 | /** |
Marcus_2B | 0:2ef6fb83757c | 46 | * Methode qui renvoie la date du dernier dimanche d'un mois |
Marcus_2B | 0:2ef6fb83757c | 47 | * @param month mois |
Marcus_2B | 0:2ef6fb83757c | 48 | * @param year année |
Marcus_2B | 0:2ef6fb83757c | 49 | * @return uin8_t jour du mois de 1 à 31 |
Marcus_2B | 3:3b689218225e | 50 | * |
Marcus_2B | 4:3fdbc10667a6 | 51 | * @code |
Marcus_2B | 4:3fdbc10667a6 | 52 | * int dateDuDernierDimancheDuMois = FrenchTime::lastSundayOfMonth(5,2016); //return 29 |
Marcus_2B | 4:3fdbc10667a6 | 53 | * @endcode |
Marcus_2B | 0:2ef6fb83757c | 54 | */ |
Marcus_2B | 0:2ef6fb83757c | 55 | static uint8_t lastSundayOfMonth(uint8_t month, int year); |
Marcus_2B | 0:2ef6fb83757c | 56 | |
Marcus_2B | 0:2ef6fb83757c | 57 | |
Marcus_2B | 0:2ef6fb83757c | 58 | /** |
Marcus_2B | 0:2ef6fb83757c | 59 | * Methode qui renvoie le jour de la semaine correspondant à une date |
Marcus_2B | 0:2ef6fb83757c | 60 | * @param day date du jour |
Marcus_2B | 0:2ef6fb83757c | 61 | * @param month mois |
Marcus_2B | 0:2ef6fb83757c | 62 | * @param year année |
Marcus_2B | 0:2ef6fb83757c | 63 | * @return uin8_t jour de la semaine de 0(dimanche) à 6(samedi) |
Marcus_2B | 3:3b689218225e | 64 | * |
Marcus_2B | 4:3fdbc10667a6 | 65 | * @code |
Marcus_2B | 4:3fdbc10667a6 | 66 | * int jour = FrenchTime::dayOfWeek(22,6,2016); //return 3 |
Marcus_2B | 4:3fdbc10667a6 | 67 | * @endcode |
Marcus_2B | 0:2ef6fb83757c | 68 | */ |
Marcus_2B | 0:2ef6fb83757c | 69 | static uint8_t dayOfWeek(uint8_t day, uint8_t month, int year); |
Marcus_2B | 0:2ef6fb83757c | 70 | }; |
Marcus_2B | 0:2ef6fb83757c | 71 | |
Marcus_2B | 0:2ef6fb83757c | 72 | #endif |