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

Résolu
cs_perrierbertrand Messages postés 40 Statut Membre -  
 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

  1. cs_perrierbertrand Messages postés 40 Statut Membre 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
  2. cs_perrierbertrand Messages postés 40 Statut Membre 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
  3. cs_perrierbertrand Messages postés 40 Statut Membre 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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. 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
    1. cs_perrierbertrand Messages postés 40 Statut Membre 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