Temps

De knowledge
Aller à la navigation Aller à la recherche

Les epoch

Sous Unix, Linux et tout les systèmes bien nés l'heure et la dates sont comptés par le nombre de secondes écoulées depuis une date pivot : le 1/1/1970 à 00:00:00 TU ( ou GMT)

Cette date est dite epoch. Le début des temps.

Suivant les OS et les années on a stocké cette valeur sous plusieurs formes.

Au début sous forme d'un entier signé de 32 bits.

entier de 32 bits
Valeur date
0 Thu Jan  1 01:00:00 1970
2147483647 Tue Jan 19 04:14:07 2038
−2147483648 Fri Dec 13 20:55:13 1901

avec une précision de 1 seconde

Oui les unix des années 70 ne passent pas le 19 janvier 2038.... ça approche! De même que tous les programmes qui stockent le temps dans un "int" sur le machines ou le "int" correspond a 32 bits. Un bug de l'an 2000 38 ans plus tard?

Ensuite on est passé sur un entier de 64 bits. Comme on gagne beaucoup en profondeur de date on peut se permettre d'être plus précis! L'entier peut coder le nombre de secondes mais aussi de millisecondes ou de microsecondes.

Valeur pas milliseconde (ms) pas microseconde (µs)
0 Thu Jan  1 01:00:00 1970 Thu Jan  1 01:00:00 1970
9 223 372 036 854 775 807 Sun Aug 17 08:12:55 292 278 994 Sun Jan 10 05:00:54 294247
-9 223 372 036 854 775 808 Sun May 16 16:56:26 -292 275 055 Sun Dec 21 20:08:27 -290308

En comptant en ms on peut traiter des dates dans une fourchette d'un peu moins de -300 million d'années à + 300 millions (on peut remonter aux dinosaures à la milliseconde près)

En comptant avec une précision de la µs on va de -300 mille ans à +300 mille ans (des débuts de hommo sapiens à.... je ne sais pas) .

Les systèmes crés dans les années 80 ont préféré prendre comme référence le 1/1/1900 (Windows) mais ce n'est pas la norme.

Exceptions de Microsoft

Windows (et MS DOS)

Créee dans les années 80, windows a préféré prendre comme référence le 1/1/1900 (Windows) mais ce n'est pas la norme ca marche pareil sinon sauf que c'est décalé de 70 ans!

J'ai un peu perdu de vue cet OS. Peut être que les versions développées à le suite de Windows NT utilisent un format standard.

Suite Office

Dans le logiciels de la suite office on compte les dates par un nombre flottant comptant le nombre de jours depuis.. le 0/01/1900 à 00:00:00. oui le zéro janvier ! (31/12/1899....)

valeur date (excel par exemple)
0 00/01/1900 00:00:00
0,5 00/01/1900 12:00:00
1 01/01/1900 00:00:00
1000 26/09/1902 00:00:00
45924 24/09/2025 00:00:00
29716,83333 10/05/1981 20:00:00
2899999,999999 05/12/9839 00:00:00

Donc on peut compter le temps de 1900 à l'an 9839.

En revanche ca n'accepte pas les nombres négatifs! Pas de dates au 19eme siècle !

Pour le précision je ne sais pas trop. A l'affichage on ne peut pas descendre en dessous de la précision à la seconde mais pour le calcul... c'est subtil!

Une seconde correspond à 1/24/3600 = 1,15741E-05 jours!

Soit 0,000011574074 jours. (Excel a des nombres décimaux avec une précision de 15 chiffres quelle que soit la virgule)

Donc si on passe de 0 à 0,000000000000001 ca correspondrait à 8,64E-11 secondes soit 86,4 ps (pico secondes) on est très très précis autour de 1900

En revanche l'échelle "à la fin des temps pour Excel" si on passe de 2899999,99999998 à 2899999,99999999 soit 0,00000001 jours la précision tombe à 864 µs ce qui est pas mal.

En 2025 à la rédaction de cette page le jour 45924 est codé sur 5 chiffre. l'incrément le plus petit est dont 0,0000000001 on est précis à 8,6 µs

Plus le temps passe moins Excel est précis pour ses calcule de temps!