- 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 :Dans cette partie on va s'intéresser à différents problèmes qui peuvent arriver si vous nemanipulez pas correctement les dates avec des fuseaux horaires.Donc j'avais abordé cet acronyme UTC qui signifie en fait temps universel coordonnéqui est une échelle sur laquelle la grande majorité des pays s'accordent pour reconnaître
00:00:17 :que c'est donc le temps universel.Donc c'est bien important quand vous manipulez des dates de passer à chaque fois par UTCet de ne pas faire des manipulations directement sur un fuseau horaire.
00:00:29 :Alors comme ça ça peut paraître très abstrait je vais vous montrer différentsexemples avec les bonnes et les mauvaises façons de faire et à quel point on peutavoir un résultat différent en fonction de la façon dont on manipule ces dates.
00:00:39 :Alors pourquoi c'est dangereux ? Eh bien notamment parce qu'en fait quand on va fairedes modifications sur un fuseau horaire précis on ne va pas prendre en compte par exemplele changement d'heure d'été à heure d'hiver.
00:00:50 :Donc on a ces décalages comme on l'avait vu dans la base de données avec les différentsfuseaux horaires avec des offsets qui vont être différents en fonction de l'heured'hiver ou l'heure d'été.
00:00:58 :Parfois on va avoir 4 heures de différence avec le temps ETC, des fois 5 heures.Par exemple à Montréal on va avoir deux fuseaux horaires en fonction de la périodede l'année.
00:01:08 :On a EDT et EST donc qui signifie Eastern Daylight Time et Eastern Standard Time.Si on va voir ailleurs aux Etats-Unis vous allez retrouver d'autres acronymes que vousavez peut-être déjà vu qui sont PDT et PST donc qui signifie Pacific Daylight Timeet Pacific Standard Time.
00:01:24 :On a souvent à la fin DT et ST avec différentes choses ici donc Daylight et Standard.Donc ça en fait c'est les différents fuseaux horaires en fonction de l'année et si onregarde par exemple en 2020 le passage de l'heure d'hiver à l'heure d'été il aeu lieu dans la nuit du 7 au 8 mars.
00:01:40 :Donc on va faire un petit exemple ici avec Daytime, on va importer les fuseaux horairesdonc avec ZoneInfo et on va créer une variable MontréalTimeZone qui représente le fuseauhoraire à Montréal.
00:01:51 :Donc je fais un objet ZoneInfo America slash Montréal.On va ensuite créer une date que je vais appeler March 7 qui va être égale au 3 mars2020 à 13 heures par exemple et on passe le fuseau horaire de Montréal.
00:02:03 :Et on va faire une deuxième date qui va être le lendemain donc le 8 mars et on va changerici le 7 pour le 8 et je vais vous montrer si je fais un print de ces deux dates.
00:02:13 :Donc on va faire un print de March 7 et March 8.Vous allez voir que l'offset ne sera pas le même.Donc je lance, on a bien le 7 mars à 13 heures et là on voit à la fin quand on faitun print d'une date on a le offset avec UTC qui est affiché.
00:02:27 :Donc là le 7 mars on avait moins 5 heures et le lendemain le 8 mars on a seulement moins4 heures.Donc ça c'est vraiment à cause du changement d'heure d'hiver à heure d'été.
00:02:37 :On peut également afficher le nom du fuseau horaire en affichant TZName donc on a uneméthode qui s'appelle TZName qui nous permet d'afficher le nom du fuseau horaire d'unedate.
00:02:47 :Et là on va voir très clairement on va retrouver ce EST et EDT donc EST qui est le temps standardqui est en fait l'heure d'hiver et EDT Daylight qui est l'heure d'été.
00:02:56 :Donc la différence d'une heure qu'on a par rapport à UTC elle est normale car ona avancé d'une heure dans la nuit du 7 au 8 mars 2020 à Montréal.
00:03:03 :Donc l'écart relatif par rapport à UTC il n'est plus le même.L'heure universelle elle par contre elle n'a pas bougé mais l'heure à Montréaloui et ces changements ils n'arrivent pas forcément toujours partout dans le monde.
00:03:14 :C'est pour cette raison que notamment tous les ans pendant environ 3 semaines il n'ya plus que 5 heures de décalage entre Paris et Montréal au lieu de 6 parce que le passagede l'heure d'hiver à l'heure d'été en France il ne se fait pas exactement au mêmemoment au Canada et en France.
00:03:26 :Donc des fois on a 6 heures de décalage des fois pendant 2-3 semaines on a plus que5 heures.Donc cette différence elle peut causer pas mal de problèmes lorsque vous réalisezdes opérations sur une date.
00:03:36 :Donc je vais vous montrer déjà la mauvaise façon de faire.Donc la mauvaise façon de faire en fait c'est de faire ces opérations directementavec les fuseaux horaires qui sont appliqués sur vos dates et la bonne façon de faireça va être en fait de tout passer en UTC donc de revenir à une échelle de temps universel
00:03:51 :faire les opérations et ensuite modifier cette date en temps universel pour la remettredans un fuseau horaire précis.Donc je vais vous montrer la mauvaise façon de faire je vais importer une autre classequ'on verra plus tard qui s'appelle TimeDelta qui va me permettre d'ajouter une journéeà une date.
00:04:06 :Donc là je reprends ma date du 7 mars avec le fuseau horaire de Montréal et je vaisajouter un jour avec un TimeDelta donc on va faire March 7 plus TimeDelta de un jourdonc on ajoute un jour à cette date et je vais faire un print du 8 mars.
00:04:24 :Donc ça c'est la mauvaise façon de faire je vous le rappelle et qu'est ce qu'on aici et bien on a le 8 mars et il est 13 heures.
00:04:30 :On a l'offset de moins 4 donc vous voyez que là le changement à l'heure d'été n'apas été pris en compte.On est passé du 7 au 8 mars et rappelez vous dans la nuit du 7 au 8 mars on a changéd'heure on a avancé d'une heure donc on avait un décalage qui était de moins 5 et on passe
00:04:46 :à un décalage de moins 4 et là ce décalage n'est pas répercuté dans l'heure.On devrait passer de 13 heures à 14 heures puisque dans la nuit du 7 au 8 on est passéde 2 heures du matin à 3 heures du matin on a perdu donc une heure et donc là vous
00:04:59 :voyez que ce changement n'a pas été répercuté.Donc maintenant on va voir comment faire de la bonne façon pour prendre en compte cedécalage donc je vais enlever mon information de fuseau horaire ici et ce que je vais fairec'est déjà convertir cette date en UTC donc je vais changer le fuseau horaire pour
00:05:14 :avoir cette échelle de temps universelle donc je vais faire une autre variable quiva être March 7 UTC et on va faire une conversion avec As Time Zone et on va dire qu'on veutla convertir en Zone Info UTC donc là on va avoir cette date dans le temps universel
00:05:30 :on va pouvoir ensuite ajouter un jour avec une date qui est cette fois ci sur l'échelleuniverselle et ensuite la convertir pour la mettre dans le fuseau horaire de Montréaldonc là je vais faire un March 8 on va écraser tout simplement notre variable et on va direque c'est égal à As Time Zone et là on va remettre notre Montréal Time Zone.
00:05:50 :Donc vous voyez là la différence c'est qu'on va d'abord prendre notre date la passeren UTC on va faire notre calcul au niveau UTC donc on va ajouter une journée sur cetteéchelle de temps universelle sur laquelle il n'y a pas cette notion de fuseau horairepuisqu'elle ne bouge pas cette heure universelle et une fois qu'on a fait cette opération
00:06:09 :qu'on a ajouté une journée sur cette échelle de temps universelle on va lui dire de nousretourner par rapport à cette heure universelle la date et l'heure avec le fuseau horairede Montréal donc on va bien appliquer le bon offset le 7 mars on appliquerait un offsetde moins 5 heures le 8 mars on applique un offset qui n'est plus que de 4 heures donc
00:06:27 :vous allez voir que cette fois ci on a bien le bon décalage et ce n'est pas le cas parceque j'ai oublié ici de mettre UTC donc j'avais converti en fait ma date qui était naïvedonc il n'avait pas ces informations de fuseau horaire donc vous voyez que ça ne marchait
00:06:39 :pas mais si je prends bien ma date au format UTC donc mars 7 UTC ici sur laquelle j'ajoutele time delta donc je relance le script et cette fois ci vous voyez qu'on a bien 14 heuresdonc le fait de convertir après coup dans le fuseau horaire avec une date qui est UTC
00:06:55 :ça va en fait appliquer le bon offset donc le bon offset de 4 heures et non plus de 5heures par rapport à la date qu'on lui a donné donc vous voyez ici on a deux scriptsqui sont assez identiques mais qui donnent deux résultats différents en fonction du
00:07:07 :moment où on applique les fuseaux horaires avant de terminer cette vidéo je vais vousmontrer un autre exemple qui se trouve et également assez parlant c'est en fait unexemple dans lequel je souhaite savoir combien de temps s'est écoulé entre deux datesdonc là pour l'exemple j'ai repris également deux dates qui se trouvent entre ce passage
00:07:22 :d'heure d'hiver à l'heure d'été et donc je veux calculer combien de temps s'est écouléentre le 7 mars à 13h et le 10 mars à 13h à Montréal donc vous allez voir que dansle premier exemple ici j'applique déjà le fuseau horaire de Montréal et je fais moncalcul donc je fais tout simplement une soustraction entre le 10 et le 7 pour savoir combien de
00:07:41 :temps s'est écoulé entre ces deux dates et après je fais la même chose mais cettefois ci en passant par UTC donc je fais as time zone ici pour convertir ces dates avecle fuseau horaire de Montréal pour les remettre les deux sur l'échelle de temps universelleet là je fais la même soustraction mais cette fois ci avec les dates sur l'échelle
00:07:58 :de temps universelle et donc vous allez voir que là encore on n'a pas le même résultatdans le premier cas de figure quand on est sur le même fuseau horaire et qu'on faitla soustraction on n'a pas l'offset qui est appliqué par rapport à UTC et donc onse retrouve avec un calcul qui ne prend pas en compte ce changement d'heure on se retrouve
00:08:14 :avec précisément trois jours entre les deux et dans le deuxième cas de figure quand onpasse par l'échelle de temps universelle on a bien deux jours et 23h ce qui est labonne information puisque comme on a perdu une heure entre le 7 et le 8 mars et bien
00:08:28 :on a logiquement deux jours et 23h et non pas trois jours entre ces deux dates doncencore un autre exemple qui vous montre que quand vous êtes directement sur le fuseauhoraire et que vous faites des opérations on n'a pas la bonne information alors quequand on repasse en UTC avec cette échelle de temps universelle là on va avoir la bonne
00:08:45 :mesure qui va être effectuée donc n'hésitez pas à revoir cette vidéo à t'être reposéà faire les exemples de votre côté également ce qu'il faut vraiment retenir ici c'est queà chaque fois que vous voulez faire des comparaisons ou des opérations entre deux dates il fauttoujours s'assurer de revenir sur cette échelle de temps universelle pour pouvoir faire des
00:09:01 :comparaisons avec la même échelle de temps et ensuite appliquer ces fuseaux horaireset ne pas faire l'inverse donc ne pas avoir déjà des dates sur des fuseaux horairesc'est pareil si on avait différents fuseaux horaires imaginons qu'on ait une date avecun fuseau horaire en Europe et une autre date avec un fuseau horaire à Montréal c'est
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.