- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Quand on crée des dates, il arrive souvent qu'on souhaite créer des objets non pas à partir denombres entiers pour spécifier les années, les mois, les jours, etc. mais directement à partir
00:00:08 :d'une chaîne de caractère. Le problème qu'on a, c'est que la représentation des dates sousforme de chaîne de caractère, elle peut prendre beaucoup de formes différentes selon les payset les endroits dans lesquels on se trouve. Par exemple, aux Etats-Unis, vous le savez peut-être,
00:00:21 :on a un format qui est plutôt sous la forme mois, jours et années comme ceci. Donc par exemple,on serait le 10-24-2021 comme ceci. Et si vous êtes en Europe, ça va plutôt être l'inverse. On va
00:00:35 :partir déjà du jour, donc on va avoir le 24-10-2021. Donc déjà là, c'est assez problématique puisqu'onpeut inverser le mois et le jour en fonction des endroits dans lesquels on se trouve. Alors pour
00:00:47 :pallier à ça, il y a une norme qui a été créée qui s'appelle la norme ISO 8601 comme ceci. Doncc'est une norme qui dit en fait qu'on va de l'élément le plus grand au plus petit. Donc dans
00:00:58 :le cas d'une date, on aurait YYYY qui représente l'année. Donc l'année en premier, ensuite le moiset ensuite le jour. Donc là on serait en 2021, 10-24 pour le 24 octobre 2021. Donc ça, ça permet
00:01:11 :d'avoir quelque chose qui est uniforme peu importe où on se trouve et vous allez voir qu'avec lesdates, on a beaucoup de normes comme ça. Notamment, on a le fuseau horaire UTC qui est le temps
00:01:20 :universel qui va nous permettre d'avoir la même base pour tout le monde peu importe où on setrouve dans le monde. Et on va utiliser donc beaucoup de normes comme ça qui vont nous
00:01:29 :permettre de parler le même langage en quelque sorte. Donc cette norme, on peut s'en servir pourconvertir une chaîne de caractère en objet date. Donc pour vous montrer, je vais importer la classe
00:01:39 :date du module DateTime et sur cet objet, on a une méthode qui s'appelle FromISOFormat. Et donccette méthode, on va pouvoir lui passer une chaîne de caractère avec une date qui suit cette normeISO 8601. Donc si je reprends le 24 octobre, on va mettre 2021-10-24 et si j'appuie sur entrée,
00:01:59 :vous voyez qu'on se retrouve bien avec un objet DateTime.Date avec l'année 2021, le mois 10 etle jour 24. Donc ça c'est pratique dans le cas où on a une date qui est sous ce format précisément,
00:02:10 :qu'on peut donc convertir en objet date mais parfois on va avoir des formats qui vont êtredifférents. On pourrait par exemple avoir le 22 octobre 2021 sous ce format là, donc sous forme de
00:02:21 :chaîne de caractère et dans ce cas-ci la norme ISO 8601 ne fonctionnerait pas. Donc pour convertirune chaîne de caractère dans un format précis en date, on peut utiliser une méthode qui s'appelleStringPayTime comme ceci. Donc le P ça signifie parser, parser qui signifie tout simplement
00:02:37 :analyseur en français, donc un petit moyen mnémotechnique de s'en souvenir. Donc StringPayTimecomme ceci qui nous permet de convertir une chaîne de caractère selon un format bien spécifique. Donc
00:02:47 :si je reprends mon objet date, je vais faire StringPayTime comme ceci. En premier je lui passedonc ma chaîne de caractère qui représente la date que je souhaite convertir et en second on vapasser une autre chaîne de caractère qui va représenter avec un langage un petit peu spécial
00:03:01 :la façon dont est formatée la date. Alors ce langage un petit peu spécial vous pouvez retrouvertoutes ces spécifications sur un site très bien fait qui s'appelle StringFTime.org et là vous
00:03:11 :allez retrouver tous les codes qui vont permettre de représenter les dates. Donc dans notre cas oùon a le 22 octobre 2021 comme ceci, on va chercher quel symbole représente le jour avec deux nombrescomme ceci, quel symbole représente le mois avec les trois lettres et l'année avec les quatre
00:03:26 :nombres. Donc pour le jour ça va être %D, vous voyez qu'il faut bien faire attention, il y aaussi un autre code qui permet de représenter le jour mais sans le 0 devant. Donc dans notre cas
00:03:35 :on a les deux nombres mais imaginez qu'on est le 1er octobre ou le 2 octobre ou une date en dessousde 10 et bien là on pourra voir une différence entre ces deux codes. Donc dans notre cas on va
00:03:44 :remettre le 24 octobre pour être cohérent avec ce qu'on avait ici. Donc le 24 octobre là dans cecas-ci on pourra mettre celui-ci ou celui-ci, ça ne posera pas de problème, ça marcherait dans lesdeux cas puisqu'on a deux nombres mais si on avait qu'un seul nombre il faudrait bien prendre soit
00:03:57 :celui-là soit celui-là. Donc on va mettre déjà %D donc on va le mettre en deuxième dans la chaînede caractère donc on va commencer par %D ensuite on met un espace puisqu'on a un espace ici,ensuite le mois donc le mois c'est avec les trois lettres donc c'est %B cette fois-ci donc je vais
00:04:12 :mettre %B, encore un espace et pour l'année ça va être %Y avec un Y majuscule. Vous voyez quesi on avait juste les deux derniers nombres de l'année ce serait un Y minuscule. Donc il faut
00:04:23 :bien faire attention à ce code et à ce formatage puisque si on n'utilise pas le bon formatage ilne pourra pas comprendre notre chaîne de caractère, il ne pourra donc pas la convertir en objet detype date. Donc là je vais valider avec ça et là on a une belle erreur puisque je ne l'ai pas
00:04:37 :utilisé sur la bonne classe, j'ai utilisé date, je vais importer dateTime donc depuis le modulepuisque cette méthode n'existe effectivement pas sur les objets de type date. Donc comme je vous
00:04:46 :disais c'est pour ça que même quand on utilise ici uniquement une date et qu'on n'a pas de notiond'heure on est obligé de passer par dateTime dans ce cas-ci donc c'est pour ça que je vous disaisqu'au final on va souvent utiliser cette classe qui permet d'éviter ce genre d'erreurs et de
00:05:00 :s'assurer qu'on a toutes les méthodes qui sont disponibles. Donc je valide et cette fois-ci j'aibien un objet de type dateTime avec l'année, le mois et le jour qui ont été correctement récupérésà partir de cette chaîne de caractère en fonction de ce formatage ici. Et si je reviens là et que
00:05:16 :je mets cette fois-ci un Y minuscule vous voyez que là on a un problème puisqu'il n'arrive pasà convertir ma chaîne de caractère avec le format que je lui ai donné. Donc StringPayTime
00:05:25 :très pratique et on a également StringFTime qui est donc le même nom que le site qu'onavait ici. StringFTime qui signifie donc StringFromTime donc là ça va être l'inverse en
00:05:35 :fait c'est à dire qu'on va pouvoir convertir une date en texte. Donc si par exemple je récupèrel'heure qu'il est actuellement avec dateTime.now donc là j'ai un objet de type date avec la date
00:05:45 :d'aujourd'hui et l'heure actuelle au moment où j'enregistre cette formation. Et donc si je veuxrécupérer cette date sous un format de chaîne de caractère je peux utiliser donc StringFTimedonc StringFromTime qui signifie donc chaîne de caractère depuis le temps et là je peuxremettre donc ces codes un petit peu bizarres avec les pourcentages. Donc là on va mettre par
00:06:04 :exemple $D qui représente le jour donc on avait ce $D ici. Pour le mois par contre je vaismettre %B avec un B majuscule pour récupérer le nom au complet et pour l'année je vais garderle %Y majuscule. Donc on va mettre %B majuscule et %Y et si je valide on retrouve bien donc la
00:06:22 :date cette fois-ci avec le nom du mois en entier. Donc ces deux fonctions elles sont très pratiquespuisque quand on va travailler avec des dates généralement on les a sous forme de chaîne decaractère et on veut également les afficher sous forme de chaîne de caractère. Donc c'est très
00:06:34 :pratique de pouvoir faire ces conversions dans un sens et dans l'autre. Également si vous voulezaller plus loin il y a deux modules qui sont très pratiques qui ne sont par contre pas inclus dansla bibliothèque standard de Python qui sont DateUtil et DateParseur. Je vais vous montrer
00:06:47 :ce qu'on peut faire avec ces modules. On a déjà donc DateUtil comme ceci et depuis ce module onpeut utiliser la classe parseur et on a une méthode parse qui va nous permettre de faireà peu près ce même genre d'opération qu'on a fait avec StringPayTime mais cette fois-ci on va
00:07:02 :avoir beaucoup plus de liberté et on ne va pas être obligé de passer un format. Par exemple jepeux lui dire 24 octobre 2021 at 9 am and 18 minutes comme ceci. Donc là je donne une phrase
00:07:15 :comme je le prononcerai en anglais bien sûr dans ce cas-ci. Si je voulais créer une date je valideet là vous voyez qu'on a bien un objet avec le 24 octobre à 9h18. Comme je vous disais par contre
00:07:26 :vous avez vu que j'ai utilisé October donc en anglais et même le reste de la phrase est enanglais. Si je mets octobre ça ne marche pas puisque là vous voyez un non string format. Donc
00:07:35 :on est un petit peu limité avec DateUtil puisqu'il faut quand même rester en anglais. Il y a un autremodule par contre qui est vraiment incroyable qui s'appelle DateParseur et elle va beaucoup plusloin. Donc là encore c'est une bibliothèque qu'il faut installer avec pip séparément mais vous
00:07:49 :allez voir que c'est très très impressionnant ce qu'on peut faire avec. Donc là encore on aune méthode parse et là je peux lui passer des informations comme par exemple aujourd'hui. Donc
00:07:57 :je peux le mettre en français et il va comprendre qu'aujourd'hui et bien c'est comme le now en faitc'est aujourd'hui le 24 octobre à 18h24. Je peux lui dire demain et là ça va me récupérer la date
00:08:08 :de demain. Donc vous voyez à quel point c'est puissant si vous avez un input d'un utilisateurque vous ne pouvez pas formater, vous ne savez pas forcément d'avance comment l'utilisateur vaformuler la date, et bien avec cette bibliothèque vous avez vraiment quelque chose de très précis.
00:08:21 :Comme vous l'avez vu là j'ai utilisé des mots français, on peut l'utiliser dans mêmed'autres langues, par exemple en portugais. Si je mets Antem qui veut dire hier et bien là on va
00:08:30 :récupérer la date d'hier donc le 23 octobre grâce à ce mot en portugais. Donc c'est vraimentincroyable. Personnellement j'ai encore pas vraiment trouvé les limites de cette bibliothèque. Je vais
00:08:40 :vous montrer d'autres exemples assez impressionnants. Je peux dire il y a un mois, je valide et là j'aibien la date d'il y a un mois donc le 24 septembre. Donc vous voyez que cette bibliothèque on peut
00:08:49 :vraiment lui passer un input humain comme quelqu'un écrirait par exemple dans un email ou des chosesdu genre et récupérer une date à partir de cette chaîne de caractère. Un dernier exemple pour la
00:08:58 :route et après j'arrête ici et je vous laisse rester de votre côté. Je peux le faire en anglaiset même mettre des informations d'heure donc one year ago at midnight comme ceci et là je vaisrécupérer la date il y a un an donc le 24 octobre 2020 cette fois-ci à minuit. Donc très très pratique
00:09:14 :cette bibliothèque. On a vu trois façons de faire donc avec StringPayTime et StringFTime quilà sont inclus dans la bibliothèque standard de Python mais qui sont un petit peu plus limitéset ensuite DateUtil et DateParser qui sont deux autres bibliothèques beaucoup plus puissantespour convertir des chaînes de caractère en objet DateTime.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.