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 Julien Castello

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?

UserRevisionLine numberNew 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