Représentation du temps – Calculs sur les dates et heures

Pourquoi 60 ?

import math

def nb_diviseurs(n):
    count = 0
    for i in range(1, int(math.sqrt(n)) + 1):
        if n % i == 0:
            if n == i * i: count += 1
            else: count += 2
    return count

maxi = 0
for n in range(1, 100):
    t = nb_diviseurs(n)
    if t > maxi:
        print(f"{n} a {t} diviseurs")
        maxi = t

# Résultats :

1 a 1 diviseur
2 a 2 diviseurs
4 a 3 diviseurs
6 a 4 diviseurs
12 a 6 diviseurs
24 a 8 diviseurs
36 a 9 diviseurs
48 a 10 diviseurs
60 a 12 diviseurs

Nombre de jours entre 2 dates

mois_jours = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

def est_bissextile(annee):
    return (annee % 4 == 0 and annee % 100 != 0) or annee % 400 == 0

def jours_dans_annee(jour, mois, annee):
    jours = jour
    for m in range(1, mois):
        jours += mois_jours[m - 1]
    if mois > 2 and est_bissextile(annee): jours += 1
    return jours

def jours_entre_dates(j1, m1, a1, j2, m2, a2):
    if (a1, m1, j1) > (a2, m2, j2):
        j1, m1, a1, j2, m2, a2 = j2, m2, a2, j1, m1, a1
    jours_total = 0
    if a1 == a2:
        return jours_dans_annee(j2, m2, a2) - jours_dans_annee(j1, m1, a1)  
    jours_total += (366 if est_bissextile(a1) else 365) - jours_dans_annee(j1, m1, a1)
    jours_total += jours_dans_annee(j2, m2, a2)  
    for annee in range(a1 + 1, a2):
        jours_total += 366 if est_bissextile(annee) else 365  
    return jours_total

# Exemple

>>> jours_entre_dates(15,10,1582,4,8,2024)
161366

Programme CULMINATION pour les ti-82/83/84

Disp "JJMM.AA ?"
Input D
Disp "LONGITUDE ?"
Input L
dbd(101+fPart(D),D→N
2π(N-81)/365→B
7.678sin(B+1.374)-9.87sin(2B)→E
Disp "CULMINATION"
12+E/60-L/15▸DMS

Programme LONGITUDE pour les ti-82/83/84

Disp "CULMINATION"
Disp "HH°MM'SS''?"
Input H
getDate→L₁
100L₁(3)+L₁(2)+remainder(L₁(1),100)/100→D
dbd(101+fPart(D),D→N
2π(N-81)/365→B
7.678sin(B+1.374)-9.87sin(2B)→E
Disp "LONGITUDE :"
15*(12+E/60-H)
Longitude trouvée pour le 2 août 2024