Outils pour utilisateurs

Outils du site


issue163:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue163:python [2020/11/30 09:06] d52frissue163:python [2020/12/01 17:42] (Version actuelle) andre_domenech
Ligne 3: Ligne 3:
 Python has a tremendous built-in series of libraries that deal with date and time. Often, we, as programmers, use the datetime and time libraries without realizing how many features there really are. We will be looking at some of the capabilities of them in this article.** Python has a tremendous built-in series of libraries that deal with date and time. Often, we, as programmers, use the datetime and time libraries without realizing how many features there really are. We will be looking at some of the capabilities of them in this article.**
  
-En janvier 1969, un groupe de rock américain, Chicago (alors appelé Chicago Transit Authority), a posé la question musicale suivante : « Quelqu'un sait-il vraiment quelle heure il est ? » Bien que la signification de la chanson ne semble pas avoir beaucoup à voir avec l'article de ce mois-ci, la question du titre de la chanson se prête à notre sujet ce mois-ci.+En janvier 1969, un groupe de rock américain, Chicago (alors appelé Chicago Transit Authority), a posé la question musicale suivante : « Quelqu'un sait-il vraiment quelle heure il est ? » Bien que la signification de la chanson ne semble pas avoir beaucoup à voir avec l'article de ce mois-ci, la question du titre de la chanson se prête à notre sujet.
  
 Python possède une formidable série de bibliothèques intégrées qui traitent de la date et de l'heure. Souvent, en tant que programmeurs, nous utilisons les bibliothèques de date et d'heure sans nous rendre compte du nombre de fonctionnalités qu'elles contiennent réellement. Nous examinerons certaines de leurs capacités dans cet article. Python possède une formidable série de bibliothèques intégrées qui traitent de la date et de l'heure. Souvent, en tant que programmeurs, nous utilisons les bibliothèques de date et d'heure sans nous rendre compte du nombre de fonctionnalités qu'elles contiennent réellement. Nous examinerons certaines de leurs capacités dans cet article.
Ligne 18: Ligne 18:
 2020-10-23 10:50:53.169120** 2020-10-23 10:50:53.169120**
  
-Allumez votre interprèteur Python dans un terminal et commençons.+Lancez votre interpréteur Python dans un terminal et commençons.
  
 Souvent, nous utilisons simplement les bibliothèques de date et d'heure pour obtenir l'heure ou la date actuelle dans nos programmes : Souvent, nous utilisons simplement les bibliothèques de date et d'heure pour obtenir l'heure ou la date actuelle dans nos programmes :
Ligne 40: Ligne 40:
 >>> ** >>> **
  
-Ce qui est bien et facile. Vous pouvez facilement assigner l'horodatage à une variable et la diviser en valeurs unitaires+Ce qui est bien et facile. Vous pouvez facilement assigner l'horodatage à une variable et le diviser en valeurs unitaires...
  
 >>> tday = datetime.datetime.today() >>> tday = datetime.datetime.today()
Ligne 105: Ligne 105:
 Anyway, back to the subject at hand.** Anyway, back to the subject at hand.**
  
-Lorsque nous traitons avec des bases de données, nous devons souvent mettre une heure ou une date dans la base de données comme un « horodatage » pour montrer quand quelque chose s'est passé. C'est très facile.+Lorsque nous traitons avec des bases de données, nous devons souvent mettre une heure ou une date dans la base de données comme « horodatage » pour montrer quand quelque chose s'est passé. C'est très facile.
  
 >>> ts = time.time() >>> ts = time.time()
Ligne 111: Ligne 111:
 1603875671.3662472 1603875671.3662472
  
-Vous pensez peut-être que cela ne ressemble pas à une heure, à une date ou à quelque chose de semblable. Mais c'est le cas. Il s'agit d'un horodatage UNIX. C'est en fait le nombre de secondes depuis le 1er janvier 1970 UTC. D'après https://www.unixtimestamp.com/, une chose intéressante : le 19 janvier 2038, l'horodatage Unix cessera de fonctionner. Cela est dû à un débordement en 32 bits. Nous avons survécu au passage à l'an 2000, mais pourrons-nous survivre à cela ?+Vous pensez peut-être que cela ne ressemble pas à une heure, à une date ou à quelque chose de semblable. Mais c'est le cas. Il s'agit d'un horodatage UNIX. C'est en fait le nombre de secondes depuis le 1er janvier 1970 UTC. D'après https://www.unixtimestamp.com/, une chose intéressante : le 19 janvier 2038, l'horodatage Unix cessera de fonctionner. Cela est dû à un débordement en 32 bits. Nous avons survécu au passage à l'an 2000, mais pourrons-nous survivre à celui-là ?
  
-Quoi qu'il en soit, revenons au sujet qui nous occupe.+Quoi qu'il en soit, revenons au sujet initial.
  
 **Accounting **Accounting
Ligne 123: Ligne 123:
 Comptabilité Comptabilité
  
-L'un des aspects merveilleux des possibilités de manipulation de la date et de l'heure est le fait de devoir effectuer des calculs basés sur deux (ou plusieurs) heures ou dates. Disons que nous avons un employé qui peut facturer à un taux de 15 € par heure (arrondi à l'heure supérieure). Supposons en outre que cet employé travaille sur une tâche de programmation de 8 h à 11 h 27. Combien d'heures cela représente-t-il et combien facturez-vous à votre client ?+L'un des aspects merveilleux des possibilités de manipulation de la date et de l'heure est quand vous devez effectuer des calculs basés sur deux (ou plusieurs) heures ou dates. Disons que nous avons un employé qui peut facturer à un taux de 15 € par heure (arrondi à l'heure supérieure). Supposons en outre que cet employé travaille sur une tâche de programmation de 8 h à 11 h 27. Combien d'heures cela représente-t-il et combien facturez-vous à votre client ?
  
 Bien que cela semble assez simple, nous avons quelques contraintes sur la façon dont nous devons faire les calculs. Tout d'abord, nous devons convertir l'heure de début et l'heure de fin en valeurs. Bien que cela semble assez simple, nous avons quelques contraintes sur la façon dont nous devons faire les calculs. Tout d'abord, nous devons convertir l'heure de début et l'heure de fin en valeurs.
Ligne 147: Ligne 147:
 Start time: 30.10.2020 08:00 - End Time: 30.10.2020 11:27 Start time: 30.10.2020 08:00 - End Time: 30.10.2020 11:27
  
-À ce niveau, les variables starttime et endtime sont toujours des chaînes. Pour les convertir en objets d'horodatage, nous pouvons utiliser la fonction parse à partir de dateutil.parser.+À ce stade, les variables starttime et endtime sont toujours des chaînes. Pour les convertir en objets d'horodatage, nous pouvons utiliser la fonction parse à partir de dateutil.parser.
  
 >>> from dateutil.parser import parse >>> from dateutil.parser import parse
Ligne 190: Ligne 190:
 AttributeError: 'datetime.timedelta' object has no attribute 'hours'** AttributeError: 'datetime.timedelta' object has no attribute 'hours'**
  
-Voici maintenant la pierre d'achoppement. On pourrait penser que puisque nous avons une valeur qui ressemble à Heures:Minutes:Secondes, nous pourrions simplement obtenir les heures en disant+Voici maintenant la pierre d'achoppement. On pourrait penser que puisque nous avons une valeur qui ressemble à heures:minutes:secondes, nous pourrions simplement obtenir les heures en disant
  
 Hours = totaltime.hours Hours = totaltime.hours
  
-Mais, je vous dirais alors que ça ne marche pas. Si vous l'essayez, vous obtiendrez :+Mais, je vous dirai tout de suite que ça ne marche pas. Si vous l'essayez, vous obtiendrez :
  
 >>> hours = totaltime.hours >>> hours = totaltime.hours
Ligne 218: Ligne 218:
 0** 0**
  
-Bon, ça ne nous aide pas. ll'objet timedelta n'a que 3 attributs qu peuvent être utilisés. Ce sont :+Bon, ça ne nous aide pas. L'objet timedelta n'a que 3 attributs qui peuvent être utilisés. Ce sont :
 • days # jours • days # jours
 • seconds # secondes • seconds # secondes
 • microseconds # microsecondes • microseconds # microsecondes
  
-Regardons ces trois valeurs...+Regardons ces trois valeurs :
  
 >>> da = totaltime.days >>> da = totaltime.days
Ligne 248: Ligne 248:
 27** 27**
  
-Nous savons que le temps total est de 3 heures et 27 minutes, mais nous ne facturons que des heures entières, arrondies, donc nous devrions facturer 4 heures au client. Comment ferions-nous ?  Nous utilisons la méthode divmod. Elle prend deux nombres (le numérateur et le dénominateur) et retourne le quotient et le reste.+Nous savons que le temps total est de 3 heures et 27 minutes, mais nous ne facturons que des heures entières, arrondies, donc nous devrions facturer 4 heures au client. Comment ferons-nous ? Nous utilisons la méthode divmod. Elle prend deux nombres (le numérateur et le dénominateur) et retourne le quotient et le reste.
  
 >>> min, sec = divmod(sec,60) >>> min, sec = divmod(sec,60)
Ligne 278: Ligne 278:
 So we can bill the client for £60 . That wasn’t as hard as expected.** So we can bill the client for £60 . That wasn’t as hard as expected.**
  
-Ensuite, nous utilisons simplement une simple déclaration if :+Ensuite, il suffit d'utiliser une simple déclaration if :
  
 >>> if min > 0: >>> if min > 0:
Ligne 313: Ligne 313:
 pip install pytz** pip install pytz**
  
-Quand j'étais jeune (oui, à l'époque où les arcs-en-ciel étaient en noir et blancet où nous devions regarder la télévision à la bougie parce qu'il n'y avait pas d'électricité), je n'étais pas du tout conscient des fuseaux horaires. À part le fait que lorsque je voyais une publicité pour une émission de télévision et qu'ils disaient qu'elle était diffusée à 21 heures, heure de l'Est, 20 heures, heure centrale, si je voulais la regarder, je devais le faire à 20 heures, puisque je vivais dans le fuseau horaire de l'heure centrale. Mais c'était il y a longtemps. Je suppose qu'Albert Einstein dirait que tout cela est relatif. (C'est censé être une blague de geek).+Quand j'étais jeune (oui, à l'époque où les arcs-en-ciel étaient en noir et blanc et où nous devions regarder la télévision à la bougie parce qu'il n'y avait pas d'électricité), je n'étais pas du tout conscient des fuseaux horaires. À part le fait que lorsque je voyais une publicité pour une émission de télévision et qu'ils disaient qu'elle était diffusée à 21 heures, heure de l'Est, 20 heures, heure centrale, et que, si je voulais la regarder, je devais le faire à 20 heures, puisque je vivais dans le fuseau horaire de l'heure centrale. Mais c'était il y a longtemps. Je suppose qu'Albert Einstein dirait que tout cela est relatif. (C'est censé être une blague de geek.)
  
 La bibliothèque date/heure en Python ne gère pas vraiment les fuseaux horaires de façon native, mais il existe un paquet tiers que vous pouvez installer via pip. Il s'appelle pytz. La bibliothèque date/heure en Python ne gère pas vraiment les fuseaux horaires de façon native, mais il existe un paquet tiers que vous pouvez installer via pip. Il s'appelle pytz.
Ligne 336: Ligne 336:
 Alors, comment utiliser pytz? C'est assez facile. Jetons-y un œil. Alors, comment utiliser pytz? C'est assez facile. Jetons-y un œil.
  
-Nous faciliterons les choses en modifiant la déclaration import pour ces tests+Nous faciliterons les choses en modifiant la déclaration d'import pour ces tests :
  
 >>> from datetime import datetime >>> from datetime import datetime
 >>> from pytz import timezone >>> from pytz import timezone
  
-Maintenant, nous ne devons pas utiliser datetime.datetime pour avoir des informations, omme nous l'avons fait précédemment.+Maintenant, nous ne sommes pas obligés d'utiliser datetime.datetime pour avoir des informations, comme nous l'avons fait précédemment.
  
-Ici, obtenez l'objet d'horodatage natif de Python.+Ici, nous obtenons l'objet d'horodatage natif de Python.
  
 >>> native = datetime(2020,10,5,12,00) >>> native = datetime(2020,10,5,12,00)
Ligne 375: Ligne 375:
 2020-10-05 12:00:00-05:00 2020-10-05 12:00:00-05:00
  
-Attendez une seconde. Pourquoi dirait-on que mon temps a 5 heures de retard sur UTC ? C'est à cause de l'heure d'été. (Le 10 octobre 2020 était avant le passage à l'heure normale).+Attendez une seconde. Pourquoi dit-il que mon temps a 5 heures de retard sur UTC ? C'est à cause de l'heure d'été. (Le 10 octobre 2020 était avant le passage à l'heure normale.)
  
 **So, let’s do it again, this time using the .now() method… **So, let’s do it again, this time using the .now() method…
Ligne 388: Ligne 388:
 Ahhh. That makes a bit more sense. So Ronnie is 6 hours ahead of me.** Ahhh. That makes a bit more sense. So Ronnie is 6 hours ahead of me.**
  
-Refaisons-le maintenant, mais, cette fois, en utilisant la méthode .now()+Refaisons-le maintenant, mais, cette fois, en utilisant la méthode .now() :
  
 >>> native = datetime.now() >>> native = datetime.now()
Ligne 397: Ligne 397:
 2020-11-05 05:15:35.282475-06:00 2020-11-05 05:15:35.282475-06:00
  
-AhhhC'est un peu plus compréhensible. Donc, Ronnie est en avance de 6 heures sur moi.+Ahhh C'est un peu plus compréhensible. Donc, Ronnie est en avance de 6 heures sur moi.
  
 **So, the musical question of the month, “Does anybody really know what time it is?” actually does seem to have a bit more relevance than it did when the article started, doesn’t it? I’ll leave you with that question hanging in your mind, and, hopefully, I didn’t plant the song into your mind so that it keeps running again and again. **So, the musical question of the month, “Does anybody really know what time it is?” actually does seem to have a bit more relevance than it did when the article started, doesn’t it? I’ll leave you with that question hanging in your mind, and, hopefully, I didn’t plant the song into your mind so that it keeps running again and again.
Ligne 403: Ligne 403:
 As always, until next time; stay safe, healthy, positive and creative!** As always, until next time; stay safe, healthy, positive and creative!**
  
-Ainsi, la question musicale du mois, « Quelqu'un sait-il vraiment quelle heure il est ? », semble un peu plus pertinente que lorsque l'article a commencé, n'est-ce pas ? Je vous laisse avec cette question en tête, et j'espère ne pas vous avoir mis la chanson dans la tête pour qu'elle continue de tourner encore et encore.+Ainsi, la question musicale du mois, « Quelqu'un sait-il vraiment quelle heure il est ? », semble un peu plus pertinente que lorsque l'article a commencé, n'est-ce pas ? Je vous laisse avec cette question en tête, et j'espère ne pas vous avoir mis dans votre tête cette chanson qui pourrait devenir lancinante.
  
 Comme toujours, jusqu'à la prochaine fois ; restez prudent, en bonne santé, positif et créatif ! Comme toujours, jusqu'à la prochaine fois ; restez prudent, en bonne santé, positif et créatif !
  
issue163/python.1606723566.txt.gz · Dernière modification : 2020/11/30 09:06 de d52fr