Durée du jour et latitude

Combien de temps s’écoule-t-il entre le lever et le coucher du Soleil ?

La durée d’une journée dépend à la fois de la date et du lieu.

Pour étudier ses variations au cours d’une année, on peut :

  • utiliser un calendrier donnant les heures de lever et de coucher ; il faut alors, pour chaque jour, soustraire l’heure de lever à celle du coucher. Un tel calendrier est calculé pour une latitude donnée.
  • utiliser les éphémérides (calculées par l’IMCCE, par exemple).
  • utiliser quelques formules de gnomonique, comme je l’ai fait ici.

Sans tenir compte de la réfraction atmosphérique, le résultat du calcul donne :

6 latitudes représentatives ont été choisies.

À la latitude 0° (c’est-à-dire dans les zones situées sur l’équateur), la durée du jour est constamment égale à 12 h.

Quand on s’éloigne de l’équateur et que la latitude augmente, les variations annuelles sont plus prononcées entre l’hiver et l’été. En France métropolitaine par exemple (latitude située au voisinage de 45°), la durée du jour est de plus de 15 h à son maximum, mais à peine 9 h à son minimum.

Le maximum se produit au moment du solstice d’été (en général le 21 juin), et le minimum au solstice d’hiver (en général le 21 décembre).

Toutes ces courbes se croisent en deux points : ce sont les équinoxes de printemps (20 mars) et d’automne (22 septembre). À ces dates, la durée du jour est égale à 12 h, quelle que soit la latitude.

Enfin, pour les latitudes supérieures à 66,6° (c’est-à-dire au-delà du cercle polaire) :

  • il existe une période autour du solstice d’été où la journée dure 24 h (le Soleil ne se couche pas)
  • symétriquement, autour du solstice d’hiver, la durée est de 0 h (le Soleil ne se lève pas).

Plus la latitude s’approche de 90°, plus ces périodes sont longues.


Pour obtenir ces courbes, j’ai modélisé la déclinaison du Soleil avec :

J est le rang du jour durant l’année (de 1 à 365)

Ensuite, j’ai calculé l’angle H0, appelé “arc semi-diurne”. C’est l’angle horaire au lever du Soleil.

L’angle H0 ayant pour origine le midi solaire, il faut alors le multiplier par deux pour obtenir la durée du jour, et convertir les degrés en heures (1 h pour 15°, puisque la rotation du Soleil de 360° se fait en 24 h).


Source : Les cadrans solaires. Tout comprendre pour les construire. Denis SAVOIE. (Belin)

Le fichier Python de tracé du graphique :


En complément :


Autre complément : un petit programme qui demande la latitude, la longitude, la date et l’heure saisonnière (été ou hiver), et calcule les heures de lever et coucher du Soleil :

#Calcul des heures de lever et de coucher du Soleil, selon la date indiquée par l'utilisateur
from math import sin,  asin
import numpy as np
import pandas as pd

#variables initiales :-----------------------------------
Nmois=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]#nombre de jours par mois
nomsmois=["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"]

J=0#rang du jour dans l'année

donnees=pd.read_csv('EdTimcce.csv', delimiter='\t')
eqtemps=donnees["edt"]
#---------------------------------------------------------

#Récupération des données utilisateur :----------------------
print('Quelle est la date ? (ex. 5 juin)')
date=input()
print('Quelle est la latitude (en degrés) ?')
latitude=float(input())
latitude=np.radians(latitude)
print("Quelle est la longitude (en degrés, positive vers l'Est, négative vers l'Ouest) ?")
longitude=float(input())
print("Fuseau horaire +1 (heure d'hiver) ou +2 (heure d'été) ?")
F=float(input())
#-------------------------------------------------------------------------------------
jour=float(date.split()[0])
mois=date.split()[1]

#Définition des fonctions : -----------------------------------------------------------------
def numerodumois(m):#retourne le numéro du mois donné, de 1 à 12
    nummois=0#numéro du mois de 1 à 12
    for i in range(0, 12):
        if nomsmois[i]==m:
            nummois=i+1
    return nummois

def rang(jo, m):#calcule et renvoie le rang du jour dans l'année (entre 1 et 365)
    i=0
    Rang=0
    while i < m-1 :
        Rang=Rang+Nmois[i]
        i=i+1
    Rang=Rang+jo
    return Rang
    
def levercoucher(lati, decl):#calcule les heures de lever et coucher du Soleil
    Hzero=np.degrees(np.arccos(-np.tan(lati)*np.tan(np.radians(decl))))
    return 12-Hzero/15, 12+Hzero/15

def base60(H):#transforme une heure décimale en heures : minutes
    Hh=int(H)
    Hminutes=round(60*(H-Hh))
    return Hh, Hminutes

#Equation du temps

def edtemps(n):
    return eqtemps[n-1]/60

def corrlongitude(x):
    return x*4/60#à raison de 4 minutes par degré, puis conversion en heures
#------------------------------------------------------------------------------------

J=rang(jour, numerodumois(mois))

declinaison=np.degrees(asin(sin(np.radians(23.44))*sin(np.radians(360*(J-81)/365.2422))))

L, C=levercoucher(latitude, declinaison)

L=L-corrlongitude(longitude)
C=C-corrlongitude(longitude)

Lh, Lminutes=base60(L)
Ch, Cminutes=base60(C)

print("En heure solaire locale, le Soleil se lève à : ", Lh, " h", Lminutes, " min et se couche à ", Ch,  " h", Cminutes, "min.")

#corrections de l'équation du temps et du fuseau horaire :
J=int(J)
L=L+edtemps(J)+F
C=C+edtemps(J)+F

Lh, Lminutes=base60(L)
Ch, Cminutes=base60(C)

print("En heure légale, le Soleil se lève à : ", Lh, " h", Lminutes, " min et se couche à ", Ch,  " h", Cminutes, "min.")

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.