« Python date et heure » : différence entre les versions
mAucun résumé des modifications |
mAucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
Python sait tres bien gérer les dates et les heures. | Python sait tres bien gérer les dates et les heures. | ||
Pour gérer les dates linux, unix et les autres utilisent un compteur (souvent entier) comptant les intervalles de temps (secondes, ms, µs...) depuis une date donnée. Les nombres négatifs sont les dates avant cette date et les positifs après. | Pour gérer les dates linux, unix et les autres utilisent un compteur (souvent entier) comptant les intervalles de temps (secondes, ms, µs...) depuis une date donnée. Les nombres négatifs sont les dates avant cette date et les positifs après. | ||
Cette page décrit le codage du [[Temps|temps par les ordinateurs]], nous n'y revenons pas. | Cette page décrit le codage du [[Temps|temps par les ordinateurs]], nous n'y revenons pas. | ||
== Le module time == | |||
=== epoch === | |||
<syntaxhighlight lang="python3"> | <syntaxhighlight lang="python3"> | ||
import time | import time | ||
| Ligne 22 : | Ligne 21 : | ||
C'est un flottant donc sa précision est fonction de sa valeur. Elle est maximale autour de 1/1/1900 et est divisée par 10 pour chaque dizaine qui avance. | C'est un flottant donc sa précision est fonction de sa valeur. Elle est maximale autour de 1/1/1900 et est divisée par 10 pour chaque dizaine qui avance. | ||
=== time.struct_time === | |||
On peut également traiter les dates sous forme d'objet :<syntaxhighlight lang="python3"> | On peut également traiter les dates sous forme d'objet :<syntaxhighlight lang="python3"> | ||
t1=time.gmtime() | t1=time.gmtime() | ||
| Ligne 50 : | Ligne 50 : | ||
</syntaxhighlight>On est revenu a une précision a la seconde. C'est normal <code>time.struc_time</code> ne stocke pas les valeurs au delà. On perd les fractions de secondes à <code>td=time.localtime(ts)</code>. | </syntaxhighlight>On est revenu a une précision a la seconde. C'est normal <code>time.struc_time</code> ne stocke pas les valeurs au delà. On perd les fractions de secondes à <code>td=time.localtime(ts)</code>. | ||
=== Calculs de date === | |||
Si par exemple on voulait savoir la date du jours 2 semaine avant une date.<syntaxhighlight lang="python3"> | |||
import time | |||
VT2=time.struct_time((1980,5,10,20,00,0,0,0,0)) # La date de départ | |||
td=time.mktime(VT2) | |||
td=td-86400*7*2 # nombre de secondes entre deux semaines | |||
VT1=time.localtime(td) | |||
print (VT1) | |||
print (VT2) | |||
</syntaxhighlight>nous donne les deux dates:<syntaxhighlight lang="text"> | |||
time.struct_time(tm_year=1980, tm_mon=4, tm_mday=26, tm_hour=21, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=117, tm_isdst=1) | |||
time.struct_time(tm_year=1980, tm_mon=5, tm_mday=10, tm_hour=20, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=0, tm_isdst=0) | |||
</syntaxhighlight>Tiens pourquoi est-ce qu'une date à 20h moins le nombre de secondes correspondant a deux semaines ça fait une date à 21h? Est-ce un bug? | |||
Non! Nous sommes en France et le changement d'heure s'est produit. Le dimanche 29 mars 1981 on est passé de 1:59:59 à 3:00:00! | |||
Ca nous montre qu'on devrait '''TOUJOURS''' travailler avec des heures UTC (avant on disait GMT). | |||
[[Format de dates python|Format de dates]]. | == Formater les dates == | ||
Une page est réservée à cela [[Format de dates python|Format de dates]]. | |||
Version actuelle datée du 24 septembre 2025 à 21:53
Python sait tres bien gérer les dates et les heures.
Pour gérer les dates linux, unix et les autres utilisent un compteur (souvent entier) comptant les intervalles de temps (secondes, ms, µs...) depuis une date donnée. Les nombres négatifs sont les dates avant cette date et les positifs après.
Cette page décrit le codage du temps par les ordinateurs, nous n'y revenons pas.
Le module time
epoch
import time
t=time.time()
print (t)
Nous donne :
1758746873,0143945
qui est le nombre de secondes écoulées depuis le 1/1/1900 à 0:00 UTC
C'est un flottant donc sa précision est fonction de sa valeur. Elle est maximale autour de 1/1/1900 et est divisée par 10 pour chaque dizaine qui avance.
time.struct_time
On peut également traiter les dates sous forme d'objet :
t1=time.gmtime()
print (t1)
t2=time.localtime()
print (t2)
nous donne (aujourd'hui ou j'écris es lignes)
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=24, tm_hour=21, tm_min=12, tm_sec=4, tm_wday=2, tm_yday=267, tm_isdst=0)
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=24, tm_hour=23, tm_min=12, tm_sec=5, tm_wday=2, tm_yday=267, tm_isdst=1)
c'est plus facile pour les afficher ou les créer mais pour faire des opérations arithmétiques (ajouter un jour, retirer une semaine.... c'est complexe) Pour faire ce genre de calculs on dispose de fonctions de conversions.
import time
ts=time.time()
td=time.localtime(ts)
tsbis=time.mktime(td)
print (ts)
print (td)
print (tsbis)
Imprime
1758749090.0256174
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=24, tm_hour=23, tm_min=24, tm_sec=50, tm_wday=2, tm_yday=267, tm_isdst=1)
1758749090.0
On est revenu a une précision a la seconde. C'est normal time.struc_time ne stocke pas les valeurs au delà. On perd les fractions de secondes à td=time.localtime(ts).
Calculs de date
Si par exemple on voulait savoir la date du jours 2 semaine avant une date.
import time
VT2=time.struct_time((1980,5,10,20,00,0,0,0,0)) # La date de départ
td=time.mktime(VT2)
td=td-86400*7*2 # nombre de secondes entre deux semaines
VT1=time.localtime(td)
print (VT1)
print (VT2)
nous donne les deux dates:
time.struct_time(tm_year=1980, tm_mon=4, tm_mday=26, tm_hour=21, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=117, tm_isdst=1)
time.struct_time(tm_year=1980, tm_mon=5, tm_mday=10, tm_hour=20, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=0, tm_isdst=0)
Tiens pourquoi est-ce qu'une date à 20h moins le nombre de secondes correspondant a deux semaines ça fait une date à 21h? Est-ce un bug?
Non! Nous sommes en France et le changement d'heure s'est produit. Le dimanche 29 mars 1981 on est passé de 1:59:59 à 3:00:00!
Ca nous montre qu'on devrait TOUJOURS travailler avec des heures UTC (avant on disait GMT).
Formater les dates
Une page est réservée à cela Format de dates.