Python3 Date et heure
Les programmes Python peuvent gérer les dates et les heures de nombreuses façons, et la conversion des formats de date est une fonctionnalité courante.
Python fournit des modules time et calendar qui peuvent être utilisés pour formater les dates et les heures.
Les intervalles de temps sont des nombres décimaux à virgule flottante en secondes.
Chaque horodatage est exprimé comme le temps écoulé depuis minuit (epoch) le 1er janvier 1970.
Il existe de nombreuses fonctions dans le module time de Python qui peuvent convertir des formats de date courants. Par exemple, la fonction time.time() est utilisée pour obtenir l'horodatage actuel, comme dans l'exemple ci-dessous :
Exemples
import time # importer le module time
ticks = time.time()
print ("Horodatage actuel :", ticks)
La sortie de l'exemple ci-dessus est :
当前时间戳为: 1459996086.7115328
Les unités d'horodatage sont les plus appropriées pour les calculs de dates. Cependant, les dates antérieures à 1970 ne peuvent pas être représentées de cette façon. Les dates trop éloignées dans le futur ne sont pas non plus possibles, car UNIX et Windows ne prennent en charge que jusqu'en 2038.
Qu'est-ce qu'un tuple de temps ?
De nombreuses fonctions Python traitent le temps à l'aide d'un tuple de 9 groupes de nombres :
| Non. | Champ | Valeur |
|---|---|---|
| 0 | Année sur 4 chiffres | 2008 |
| 1 | month | 1 à 12 |
| 2 | jour | 1 à 31 |
| 3 | Heure | 0 à 23 |
| 4 | Minute | 0 à 59 |
| 5 | second | 0 à 61 (60 ou 61 sont des secondes intercalaires) |
| 6 | Jour de la semaine | 0 à 6 (0 correspond à lundi) |
| 7 | Jour de l'année | 1 à 366 (calendrier julien) |
| 8 | Heure d'été | -1, 0, 1, -1 est un indicateur déterminant s'il s'agit de l'heure d'été |
Ce qui précède est le tuple struct_time. Cette structure possède les attributs suivants :
| Non. | Attribut | Valeur |
|---|---|---|
| 0 | tm_year | 2008 |
| 1 | tm_mon | 1 à 12 |
| 2 | tm_mday | 1 à 31 |
| 3 | tm_hour | 0 à 23 |
| 4 | tm_min | 0 à 59 |
| 5 | tm_sec | 0 à 61 (60 ou 61 sont des secondes intercalaires) |
| 6 | tm_wday | 0 à 6 (0 correspond à lundi) |
| 7 | tm_yday | Jour de l'année, 1 à 366 |
| 8 | tm_isdst | Indique s'il s'agit de l'heure d'été, valeurs : 1 (heure d'été), 0 (pas d'heure d'été), -1 (inconnu), valeur par défaut -1 |
Obtenir l'heure actuelle
Pour convertir un horodatage renvoyant un nombre à virgule flottante en tuple de temps, il suffit de passer le nombre à virgule flottante à des fonctions comme localtime.
#!/usr/bin/python3
import time
localtime = time.localtime(time.time())
print ("本地时间为 :", localtime)
La sortie de l'exemple ci-dessus est :
本地时间为 : time.struct_time(tm_year=2016, tm_mon=4, tm_mday=7, tm_hour=10, tm_min=28, tm_sec=49, tm_wday=3, tm_yday=98, tm_isdst=0)
Obtenir l'heure formatée
Vous pouvez choisir différents formats selon vos besoins, mais la fonction la plus simple pour obtenir un modèle de temps lisible est asctime() :
#!/usr/bin/python3
import time
localtime = time.asctime( time.localtime(time.time()) )
print ("本地时间为 :", localtime)
La sortie de l'exemple ci-dessus est :
本地时间为 : Thu Apr 7 10:29:13 2016
Formater les dates
Nous pouvons utiliser la méthode strftime du module time pour formater les dates :
time.strftime(format[, t])
Exemples
import time
# Formater sous la forme 2016-03-20 11:45:39
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# Formater sous la forme Sat Mar 28 22:24:24 2016
print (time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
# Convertir une chaîne de format en horodatage
a = "Sat Mar 28 22:24:24 2016"
print (time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
La sortie de l'exemple ci-dessus est :
2016-04-07 10:29:46 Thu Apr 07 10:29:46 2016 1459175064.0
Symboles de formatage de l'heure et de la date en Python :
- %y Représentation de l'année sur deux chiffres (00-99)
- %Y Représentation de l'année sur quatre chiffres (000-9999)
- %m Mois (01-12)
- %d Jour du mois (0-31)
- %H Heure au format 24 heures (0-23)
- %I Heure au format 12 heures (01-12)
- %M Minutes (00-59)
- %S Secondes (00-59)
- %a Nom abrégé local du jour de la semaine
- %A Nom complet local du jour de la semaine
- %b Nom abrégé local du mois
- %B Nom complet local du mois
- %c Représentation locale appropriée de la date et de l'heure
- %j Jour de l'année (001-366)
- %p Équivalent local de A.M. ou P.M.
- %U Numéro de semaine de l'année (00-53), dimanche est le premier jour de la semaine
- %w Jour de la semaine (0-6), dimanche est le premier jour de la semaine
- %W Numéro de semaine de l'année (00-53), lundi est le premier jour de la semaine
- %x Représentation locale appropriée de la date
- %X Représentation locale appropriée de l'heure
- %Z Nom du fuseau horaire actuel
- %% Le signe pour cent lui-même
Obtenir le calendrier d'un mois
Le module Calendar dispose d'un large éventail de méthodes pour gérer les calendriers annuels et mensuels, par exemple l'impression du calendrier d'un mois :
Exemples
import calendar
cal = calendar.month(2016, 1)
print ("Ce qui suit affiche le calendrier de janvier 2016 :")
print (cal)
La sortie de l'exemple ci-dessus est :
以下输出2016年1月份的日历:
January 2016
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Module Time
Le module Time contient les fonctions intégrées suivantes, à la fois pour le traitement du temps et pour la conversion des formats de temps :
| Non. | Fonction et description | Exemples |
|---|---|---|
| 1 | time.altzone Renvoie le décalage en secondes pour les zones d'heure d'été à l'ouest de Greenwich. Si la région est à l'est de Greenwich, une valeur négative est renvoyée (par ex., l'Europe de l'Ouest, y compris le Royaume-Uni). Elle n'est disponible que dans les régions où l'heure d'été est activée. |
L'exemple suivant montre l'utilisation de la fonction altzone() :
>>> import time
>>> print ("time.altzone %d " % time.altzone)
time.altzone -28800
|
| 2 | time.asctime([tupletime]) Accepte un tuple de temps et renvoie une chaîne lisible de 24 caractères sous la forme "Tue Dec 11 18:07:14 2008" (mardi 11 décembre 2008, 18:07:14). |
L'exemple suivant montre l'utilisation de la fonction asctime() :
>>> import time
>>> t = time.localtime()
>>> print ("time.asctime(t): %s " % time.asctime(t))
time.asctime(t): Thu Apr 7 10:36:20 2016
|
| 3 | time.clock() Renvoie le temps CPU actuel en secondes à virgule flottante. Il est utilisé pour mesurer le temps consommé par différents programmes et est plus utile que time.time(). |
Comme cette méthode dépend du système d'exploitation, elle n'est pas recommandée à partir de Python 3.3 et a été supprimée dans la version 3.8 ; les deux fonctions suivantes doivent être utilisées à la place. time.perf_counter() # 返回系统运行时间 time.process_time() # 返回进程运行时间 |
| 4 | time.ctime([secs]) Son effet est équivalent à asctime(localtime(secs)) ; si aucun argument n'est fourni, il est équivalent à asctime(). |
L'exemple suivant montre l'utilisation de la fonction ctime() :
>>> import time
>>> print ("time.ctime() : %s" % time.ctime())
time.ctime() : Thu Apr 7 10:51:58 2016
|
| 5 | time.gmtime([secs]) Reçoit un horodatage (secondes à virgule flottante écoulées depuis l'époque 1970) et renvoie le tuple de temps t en temps moyen de Greenwich. Remarque : t.tm_isdst vaut toujours 0. |
L'exemple suivant montre l'utilisation de la fonction gmtime() :
>>> import time
>>> print ("gmtime :", time.gmtime(1455508609.34375))
gmtime : time.struct_time(tm_year=2016, tm_mon=2, tm_mday=15, tm_hour=3, tm_min=56, tm_sec=49, tm_wday=0, tm_yday=46, tm_isdst=0)
|
| 6 | time.localtime([secs] Reçoit un horodatage (secondes à virgule flottante écoulées depuis l'époque 1970) et renvoie le tuple de temps t en heure locale (t.tm_isdst peut valoir 0 ou 1, selon que l'heure d'été est en vigueur ou non à ce moment-là dans la zone locale). |
L'exemple suivant montre l'utilisation de la fonction localtime() :
>>> import time
>>> print ("localtime(): ", time.localtime(1455508609.34375))
localtime(): time.struct_time(tm_year=2016, tm_mon=2, tm_mday=15, tm_hour=11, tm_min=56, tm_sec=49, tm_wday=0, tm_yday=46, tm_isdst=0)
|
| 7 | time.mktime(tupletime) Accepte un tuple de temps et renvoie un horodatage (secondes à virgule flottante écoulées depuis l'époque 1970). | Exemples |
| 8 | time.sleep(secs) Retarde l'exécution du thread appelant, où secs désigne des secondes. |
L'exemple suivant démontre l'utilisation de la fonction sleep() :
#!/usr/bin/python3
import time
print ("Start : %s" % time.ctime())
time.sleep( 5 )
print ("End : %s" % time.ctime())
|
| 9 | time.strftime(fmt[,tupletime]) Reçoit un tuple temporel et renvoie l'heure locale représentée sous forme de chaîne lisible, avec le format déterminé par fmt. |
L'exemple suivant illustre l'utilisation de la fonction strftime() :
>>> import time
>>> print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
2016-04-07 11:18:05
|
| 10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') Analyse une chaîne de temps en un tuple temporel selon le format de fmt. |
L'exemple suivant démontre l'utilisation de la fonction strptime() :
>>> import time
>>> struct_time = time.strptime("30 Nov 00", "%d %b %y")
>>> print ("返回元组: ", struct_time)
返回元组: time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
|
| 11 | time.time( ) Renvoie l'horodatage de l'heure actuelle (secondes à virgule flottante écoulées depuis l'époque 1970). |
L'exemple suivant illustre l'utilisation de la fonction time() : >>> import time >>> print(time.time()) 1459999336.1963577 |
| 12 | time.tzset() Réinitialise les paramètres liés au temps conformément à la variable d'environnement TZ. | Exemples |
| 13 |
time.perf_counter() Renvoie le temps précis du minuteur (temps de fonctionnement du système), y compris le temps de sommeil de l'ensemble du système. Comme le point de référence de la valeur de retour n'est pas défini, seule la différence entre les résultats d'appels consécutifs est valide. | Exemples |
| 14 |
time.process_time() Renvoie le temps CPU total exécuté par le processus actuel, sans inclure le temps de sommeil. Comme le point de référence de la valeur de retour n'est pas défini, seule la différence entre les résultats d'appels consécutifs est valide. |
Le module Time contient les 2 attributs très importants suivants :
| Non. | Attribut et description |
|---|---|
| 1 | time.timezone L'attribut time.timezone est le décalage en secondes du fuseau horaire local (lorsque l'heure d'été n'est pas en vigueur) par rapport à Greenwich (>0, Amériques ; <=0 la majeure partie de l'Europe, l'Asie, l'Afrique). |
| 2 | time.tzname L'attribut time.tzname contient une paire de chaînes qui varient selon la situation : le nom du fuseau horaire local avec l'heure d'été, et celui sans. |
Module Calendar
Les fonctions de ce module sont toutes liées au calendrier, comme l'impression d'un calendrier de caractères pour un mois.
Lundi est le premier jour de la semaine par défaut, et dimanche est le dernier jour par défaut. Pour modifier ce paramètre, appelez la fonction calendar.setfirstweekday(). Le module inclut les fonctions intégrées suivantes :
| Non. | Fonction et description |
|---|---|
| 1 | calendar.calendar(year,w=2,l=1,c=6) Renvoie un calendrier au format chaîne multiligne pour l'année, avec 3 mois par ligne et une distance d'intervalle c. La largeur quotidienne est de w caractères. La longueur de chaque ligne est21* W+18+2* C。lIl s'agit du nombre de lignes par semaine. |
| 2 | calendar.firstweekday( ) Renvoie le paramètre actuel pour le jour de début de la semaine. Par défaut, lorsque le module calendar est chargé pour la première fois, il renvoie 0, c'est-à-dire lundi. |
| 3 | calendar.isleap(year) Renvoie True s'il s'agit d'une année bissextile, sinon False. >>> import calendar >>> print(calendar.isleap(2000)) True >>> print(calendar.isleap(1900)) False |
| 4 | calendar.leapdays(y1,y2) Renvoie le nombre total d'années bissextiles entre les deux années Y1 et Y2. |
| 5 | calendar.month(year,month,w=2,l=1) Renvoie un calendrier au format chaîne multiligne pour le mois month de l'année year, avec deux lignes d'en-tête, une semaine par ligne. La largeur quotidienne est de w caractères. La longueur de chaque ligne est 7*w+6. l est le nombre de lignes par semaine. |
| 6 | calendar.monthcalendar(year,month) Renvoie une liste imbriquée d'un seul niveau d'entiers. Chaque sous-liste contient des entiers représentant une semaine. Les dates en dehors du mois month de l'année year sont mises à 0 ; les dates comprises dans la plage sont représentées par le jour du mois, à partir de 1. |
| 7 | calendar.monthrange(year,month) Renvoie deux entiers. Le premier est le jour de la semaine du mois, et le second est le nombre de jours dans le mois. Les jours de la semaine vont de 0 (lundi) à 6 (dimanche). >>> import calendar >>> calendar.monthrange(2014, 11) (5, 30) (5, 30) Explication : 5 signifie que le premier jour de novembre 2014 est un samedi, et 30 signifie que novembre 2014 compte au total 30 jours. |
| 8 | calendar.prcal(year, w=0, l=0, c=6, m=3) Équivalent à print (calendar.calendar(year, w=0, l=0, c=6, m=3)). |
| 9 | calendar.prmonth(theyear, themonth, w=0, l=0) Équivalent àprint(calendar.month(theyear, themonth, w=0, l=0))。 |
| 10 | calendar.setfirstweekday(weekday) Définit le code du jour de début de chaque semaine. De 0 (lundi) à 6 (dimanche). |
| 11 | calendar.timegm(tupletime) L'inverse de time.gmtime : accepte un tuple de temps et renvoie l'horodatage de ce moment (secondes à virgule flottante depuis l'époque 1970). |
| 12 | calendar.weekday(year,month,day) Renvoie le code du jour de la semaine pour la date donnée. De 0 (lundi) à 6 (dimanche). Le mois va de 1 (janvier) à 12 (décembre). |
Autres modules et fonctions connexes
En Python, d'autres modules pour gérer les dates et les heures incluent :
Autres extensions