Connaitre si c'est heure d'été ou d'hiver

Résolu
cs_perrierbertrand Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -

Bonjour,

j'aimerai connaitre si, a une date donnée, c'est l'heure d'hiver ou d'été

ça fonctionne pour maintenant now()

mais pas à une date donnée

from datetime import datetime
import pytz

date_heure_actuel = datetime.now(pytz.timezone("Europe/Paris"))
summer_time=bool(date_heure_actuel.strftime("%Z") == "CEST")

if summer_time :
	print("heure d'été")
else:
	print("heure d'hiver")

date_heure_actuel = datetime(year=2023, month=6, day=22, hour=10, minute=19, second=10)
summer_time=bool(date_heure_actuel.strftime("%Z") == "CEST")

if summer_time :
	print("heure d'été")
else:
	print("heure d'hiver")

merci de votre futur aide


Linux / Firefox 110.0


6 réponses

_Ritchi_ Messages postés 21317 Date d'inscription   Statut Contributeur Dernière intervention   6 097
 

Bonjour,

Je t'invite à regarder les solutions proposées ici :
https://discourse.julialang.org/t/how-to-check-if-date-is-summer-time/75950

Dis-nous si l'une a ta préférence.
Ritchi

0
cs_perrierbertrand Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   1
 

celle de rafael.guerra me semble bien

mais ce n'est pas du python

il faudrait trouver un équivalent de la fonction tolast()

0
cs_perrierbertrand Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   1
 

j'ai trouvé ça

>>> import datetime
>>> import pytz.reference
>>> local_tnz = pytz.reference.LocalTimezone()
>>> local_tnz.utcoffset(datetime.datetime(2023, 3, 25, 11, 12, 30))
datetime.timedelta(seconds=3600)
>>> local_tnz.utcoffset(datetime.datetime(2023, 3, 26, 11, 12, 30))
datetime.timedelta(seconds=7200)

est-ce que LocalTimezone() prend en compte Europe/Paris ?


0
cs_perrierbertrand Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   1
 

voici la fonction qui a l'air de fonctionner, malgré l'absence d'indication du lieu "Europe/Paris"

from datetime import datetime
import pytz.reference


def calc_heure_ete_hiver(annee, mois, jour, heure, minute, seconde):
	heure_input=datetime(annee, mois, jour, heure, minute, seconde)
	local_tnz = pytz.reference.LocalTimezone()
	decal_heure_ete_hiver_gmt = local_tnz.utcoffset(heure_input)
	decal_heure_ete_hiver_gmt = -int(decal_heure_ete_hiver_gmt.seconds/3600)
	return decal_heure_ete_hiver_gmt

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 

Bonjour 

ce code te retourne l'écart entre l'heure Greenwich Mean Time (l'heure moyenne sur le.méridien de Greenwich) et l'heure locale de ton ordinateur. C'est donc la config de ton ordi qui est prise en compte, c'est pour ça que tu ne spécifie pas le fuseau.

En France, avec un ordinateur configuré à l'heure légale, c'est 1 heure en hiver et 2 heures en été.

Du coup, tant que tu es sûr que ton ordinateur est bien configuré et en France, tu peux te servir de cet écart.

Mais si tu dois utiliser ce code à l'étranger ou dans le milieu scientifique (où en général, on date en UTC {temps universel coordonné}), ça ne fonctionnera pas.


0
cs_perrierbertrand Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   1
 

Bonjour Whismeril,

merci beaucoup pour votre réponse, effectivement ça me convient car ça tourne en local

mais je vais chercher comment choisir le fuseau horaire à la place de "pytz.reference.LocalTimezone()"

0
Utilisateur anonyme
 
0