Représentation du temps – Dans les systèmes informatiques

Remarque sur les calculatrices TI : comme précisé dans la vidéo, la fonction dbd des TI-82/83/84 permet de trouver le nombre de jours entre 2 dates entre 1950 et 2049. Cependant, sur les TI-84 Plus CE cette plage a été décalée à l’intervalle 1980 – 2079.

Temps unix

import datetime
from datetime import timezone

dt = datetime.datetime(2024,8,5,14,33,17, tzinfo=timezone.utc)
>>> dt.timestamp()
1722868397.0

import time
>>> time.gmtime(1722868397.0)
time.struct_time(tm_year=2024, tm_mon=8, tm_mday=5, tm_hour=14, tm_min=33, tm_sec=17, tm_wday=0, tm_yday=218, tm_isdst=0)

>>> time.gmtime(0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

>>> time.gmtime(-2000 * 365 * 86400)
time.struct_time(tm_year=-29, tm_mon=5, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=121, tm_isdst=0)

>>> time.time()
1722867076.132498

>>> datetime.datetime.now(timezone.utc).timestamp()

Date de pâques (Formule approximative !)

def paques(annee):
    cycle_lune = 29.53058853
    j_sem = 6  # Samedi 5/1/1901
    delta = nb_jours(5, 1, 1901, 21, 3, annee)
    nb_cycles = 1 + int(delta / cycle_lune)
    ajout = int(nb_cycles * cycle_lune)
    while (j_sem + ajout) % 7 != 0: ajout +=1
    nb = ajout - delta
    if nb <= 10: j, m = 21 + nb, 3
    else: j, m = nb - 10, 4
    return (m, j)

def formule(j,m,a):
    if m < 3:
        a -= 1
        m += 12
    return int(365.25 * a) + int(30.6 * (m + 1)) + j - 3

def nb_jours(j1, m1, a1, j2, m2, a2):
    return formule(j2, m2, a2) - formule(j1, m1, a1)

def dow(j,m,a): return 1 + (formule(j,m,a) % 7)

Date de pâques (formule exacte)

def easter(annee):
    a = annee % 19
    b = annee // 100
    c = annee % 100
    d = b // 4
    e = b % 4
    f = (b + 8) // 25
    g = (b - f + 1) // 3
    h = (19 * a + b - d - g + 15) % 30
    i = c // 4
    k = c % 4
    l = (32 + 2 * e + 2 * i - h - k) % 7
    m = (a + 11 * h + 22 * l) // 451
    mois = (h + l - 7 * m + 114) // 31
    jour = ((h + l - 7 * m + 114) % 31) + 1
    return (annee, mois, jour)