datetime
, time
et calendar
que nous allons étudier dans cette leçon.
Le module Python standard datetime
Le module datetime
est le module de référence pour manipuler les dates et le temps. Il nous fournit notamment des classes date
et time
qui vont nous être précieuses.
Python distingue deux sorte d’objets date et time : les objets “avisés” et les objets “naifs”. Un objet avisé est un objet qui possède suffisamment de connaissances internes pour se situer de façon relative par rapport à d’autres objets avisés. Un objet naïf ne comporte pas assez d’informations pour se situer sans ambiguïté par rapport à d’autres objets date ou time.
Ici, vous pouvez tenir que les objets avisés datetime et time ont un attribut optionnel d’information sur le fuseau horaire nommé tzinfo
. Cet attribut ou objet tzinfo
capture l’information à propos du décalage avec le temps UTC, le nom du fuseau horaire, et si l’heure d’été est effective.
Le module datetime
définit les types suivants :
date
: représente une date; possède des attributsyear
,month
etday
;time
: représente un temps; possède des attributshour
,minute
,second
,microsecond
ettzinfo
;datetime
: combinaison d’une date et d’un temps; possède des attributsyear
,month
,day
,hour
,minute
,second
,microsecond
ettzinfo
;timedelta
: représente la différence entre deux objetsdate
,time
oudatetime
exprimée en microsecondes ;tzinfo
: classe de base abstraite (= qui ne peut pas directement être instanciée) pour les objets portants des informations sur les fuseaux horaires ;timezone
: classe qui implémente la classe abstraite.
Chaque type (c’est-à-dire chaque classe) va posséder ses fonctions et variables qui vont nous permettre d’effectuer telle ou telle manipulation sur des dates, rendant le module datetime
très complet.
Voici quelques manipulations courantes qu’on va pouvoir effectuer à partir des classes du module datetime
:
Pour une référence complète sur le module Python datetime
, je vous invite à consulter la documentation.
Le module Python standard time
Le module Python time
fournit différentes fonctions liées au temps. Il peut et est généralement utilisé conjointement avec le module datetime
. Attention ici à ne pas confondre le module time
et la classe time
du module datetime
.
Le module time
possède à nouveau de nombreuses fonctions. Nous allons rapidement passer en revue les fonctions les plus utilisées. Une nouvelle fois, je vous invite à consulter la documentation pour plus d’informations sur ce module.
La fonction time()
renvoie le temps en secondes depuis epoch sous forme de nombre à virgule flottante.
L’epoch correspond au point de départ du temps utilisé comme référence par votre OS. Il dépend donc de la plate-forme. Pour Unix, epoch est le 1er janvier 1970 à 00:00:00 (UTC). Pour savoir comment est définie epoch sur une plate-forme donnée, il suffit d’appeler time.gmtime(0)
.
La fonction gmtime()
convertit un temps (passé en argument) exprimé en secondes depuis epoch en un struct_time
au format UTC dans lequel le drapeau dst
est toujours égal à zéro. Si aucun argument ne lui est fourni, l’heure actuelle telle que renvoyée par time()
sera utilisée.
Le DST (Daylight Saving Time) correspond à l’heure d’été, un ajustement du fuseau horaire d’une heure (généralement) pendant une partie de l’année. Les règles de DST sont magiques (déterminées par la loi locale) et peuvent changer d’année en année.
Le struc_time
correspond au type de la séquence de valeur temporelle renvoyé par gmtime()
, localtime()
et strptime()
. Ses valeurs sont accessibles par index et par nom d’attribut. Les valeurs suivantes sont possibles :
Index | Nom de l’attribut | Ex de valeur |
---|---|---|
0 | tm_year | 2000, 2010, 2019 |
1 | tm_mon | plage [1, 12] |
2 | tm_mday | plage [1, 31] |
3 | tm_hour | plage [0,23] |
4 | tm_min | plage [0,59] |
5 | tm_sec | plage [0,61] |
6 | tm_wday | plage [0, 6], Lundi valant 0 |
7 | tm_yday | plage [1, 366] |
8 | tm_isdst | 0, 1 ou -1 |
– | tm_zone | abréviation du nom du fuseau horaire |
– | tm_gmtoff | décalage à l’est de UTC en secondes |
La fonction localtime()
est similaire à gmtime()
mais convertit le résultat en heure locale. On peut lui passer un nombre de secondes représentant une date en argument. Si aucun argument ne lui est fourni, l’heure actuelle telle que renvoyée par time()
sera utilisée.
La fonction mktime()
est la fonction inverse de localtime()
. Son argument est soit un struct_time
soit un 9-tuple.
La fonction strptime()
analyse une chaîne passée en premier argument représentant une heure selon un format passé en second argument. La valeur renvoyée est une valeur struct_time
telle que renvoyée par gmtime()
ou localtime()
.
La fonction strftime()
convertit un tuple ou une donnée struct_time
passé en second argument en une chaîne. Le format de la chaine est spécifié par le premier argument passé à la fonction. Si le temps n’est pas fourni, l’heure actuelle renvoyée par localtime()
est utilisée.
Les directives suivantes peuvent être utilisées dans la chaîne format :
Directive | Signification |
---|---|
%a |
Nom abrégé du jour de la semaine selon les paramètres régionaux. |
%A |
Le nom de semaine complet de la région. |
%b |
Nom abrégé du mois de la région. |
%B |
Nom complet du mois de la région. |
%c |
Représentation appropriée de la date et de l’heure selon les paramètres régionaux. |
%d |
Jour du mois sous forme décimale [01,31]. |
%H |
Heure (horloge sur 24 heures) sous forme de nombre décimal [00,23]. |
%I |
Heure (horloge sur 12 heures) sous forme de nombre décimal [01,12]. |
%j |
Jour de l’année sous forme de nombre décimal [001,366]. |
%m |
Mois sous forme décimale [01,12]. |
%M |
Minutes sous forme décimale [00,59]. |
%p |
L’équivalent local de AM ou PM. |
%S |
Deuxième sous forme de nombre décimal [00,61]. |
%U |
Numéro de semaine de l’année (dimanche en tant que premier jour de la semaine) sous forme décimale [00,53]. Tous les jours d’une nouvelle année précédant le premier dimanche sont considérés comme appartenant à la semaine 0. |
%w |
Jour de la semaine sous forme de nombre décimal [0 (dimanche), 6]. |
%W |
Numéro de semaine de l’année (lundi comme premier jour de la semaine) sous forme décimale [00,53]. Tous les jours d’une nouvelle année précédant le premier lundi sont considérés comme appartenant à la semaine 0. |
%x |
Représentation de la date appropriée par les paramètres régionaux. |
%X |
Représentation locale de l’heure. |
%y |
Année sans siècle comme un nombre décimal [00, 99]. |
%Y |
Année complète sur quatre chiffres. |
%z |
Décalage de fuseau horaire indiquant une différence de temps positive ou négative par rapport à UTC / GMT de la forme +HHMM ou -HHMM, où H représente les chiffres des heures décimales et M, les chiffres des minutes décimales [-23:59, +23:59]. |
%Z |
Nom du fuseau horaire (pas de caractères s’il n’y a pas de fuseau horaire). |
%% |
Un caractère '%' littéral. |
Le module Python standard calendar
Le module Python calendar
permet d’afficher un calendrier et fournit des fonctions relatives au calendrier.
Ce module définit une classe Calendar
qui va permettre de créer des objets de type calendrier et une classe TextCalendar
qui peut être utilisée pour générer des calendriers en texte brut.
Les calendriers sont des objets très spécifiques qu’on ne manipule pas tous les jours et je n’irai donc pas plus loin dans la présentation de ce module. Si vous avez besoin un jour de créer un calendrier, sachez simplement que ce module existe. Vous pourrez trouver toutes les informations relatives aux calendriers Python sur la documentation officielle du module.