Selon les règles de l'heure d'été britannique / heure d'été ( https://www.gov.uk/when-do-the-clocks-change ) les horloges :
- avancer d'une heure à 1 heure du matin le dernier dimanche de mars,
- reculer d'une heure à 2 heures du matin le dernier dimanche d'octobre.
En 2019, ce changement d'heure locale civile a lieu le 31 mars et le 27 octobre. les jours changent légèrement chaque année . Existe-t-il un moyen propre de connaître ces dates pour chaque année d'entrée ?
J'ai besoin de vérifier ces dates de "changement d'heure" de manière automatique. Existe-t-il un moyen d'éviter une boucle for pour vérifier les détails de chaque date afin de voir s'il s'agit d'une date de "changement d'heure" ?
En ce moment, j'explore ces dates pour 2019 afin d'essayer de trouver une procédure reproductible/automatique et j'ai trouvé ceci :
# using datetime from the standard library
march_utc_30 = datetime.datetime(2019, 3, 30, 0, 0, 0, 0, tzinfo=datetime.timezone.utc)
march_utc_31 = datetime.datetime(2019, 3, 31, 0, 0, 0, 0, tzinfo=datetime.timezone.utc)
april_utc_1 = datetime.datetime(2019, 4, 1, 0, 0, 0, 0, tzinfo=datetime.timezone.utc)
# using pandas timestamps
pd_march_utc_30 = pd.Timestamp(march_utc_30) #, tz='UTC')
pd_march_utc_31 = pd.Timestamp(march_utc_31) #, tz='UTC')
pd_april_utc_1 = pd.Timestamp(april_utc_1) #, tz='UTC')
# using pandas wrappers
pd_local_march_utc_30 = pd_march_utc_30.tz_convert('Europe/London')
pd_local_march_utc_31 = pd_march_utc_31.tz_convert('Europe/London')
pd_local_april_utc_1 = pd_april_utc_1.tz_convert('Europe/London')
# then printing all these dates
print("march_utc_30 {} pd_march_utc_30 {} pd_local_march_utc_30 {}".format(march_utc_30, pd_march_utc_30, pd_local_march_utc_30))
print("march_utc_31 {} pd_march_utc_31 {} pd_local_march_utc_31 {}".format(march_utc_31, pd_march_utc_31, pd_local_march_utc_31))
print("april_utc_1 {} pd_april_utc_1 {} pd_local_april_utc_1 {}".format(april_utc_1, pd_april_utc_1, pd_local_april_utc_1))
Les résultats de ces print
est :
march_utc_30 2019-03-30 00:00:00+00:00 pd_march_utc_30 2019-03-30 00:00:00+00:00 pd_local_march_utc_30 2019-03-30 00:00:00+00:00
march_utc_31 2019-03-31 00:00:00+00:00 pd_march_utc_31 2019-03-31 00:00:00+00:00 pd_local_march_utc_31 2019-03-31 00:00:00+00:00
april_utc_1 2019-04-01 00:00:00+00:00 pd_april_utc_1 2019-04-01 00:00:00+00:00 pd_local_april_utc_1 2019-04-01 01:00:00+01:00
J'aurais besoin d'un for
boucle à déterminer si la date actuelle est le dernier dimanche du mois ou comparer le "delta horaire" entre la date du jour et la date du lendemain pour voir s'il y a un +1, mais je me demande s'il n'y a pas une façon plus propre de faire cela ?
Y a-t-il un lien avec l'année, par exemple si l'on sait que l'année d'entrée est 2019
Nous savons donc avec certitude que la "date de changement" du mois de mars sera le 31 mars ?