Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vous avez l'heure ?

Vous avez l'heure ?

Habituel coup de gueule d'un développeur sur les fuseaux horaires, le changement d'heure etc.

E122b75d171a1029ba808f7e26af1820?s=128

Joachim Jablon

September 10, 2015
Tweet

More Decks by Joachim Jablon

Other Decks in Programming

Transcript

  1. VOUS AVEZ L’HEURE ? Joachim Jablon - Paris.py 7 Septembre

    2015 (±10%) 1
  2. QUI SUIS-JE ? 2 @Ewjoachim github.com/ewjoachim ⚠ amateur de blagues

    pourries
  3. UN PROBLÈME DE DÉFINITIONS • 1 minute = 60 secondes

    (à partir de 0")* • 1 heure = 60 minutes (à partir de 0’)** • 1 jour = 24 heures (à partir de minuit)*** • 1 semaine = 7 jours (en partant du lundi) **** • 1 mois = 30 jours = 4 semaines • 1 année = 12 mois (en partant de janvier) ***** = 365 jours ****** 3 * Sauf les minutes contenant une leap second qui peuvent en contenir 59 ou 61 ** Sauf les heures de changement d'heure qui peuvent en faire 0, ou 120 *** Sauf les jours de changement d'heure qui en font de 22 à 26 **** Sauf aux endroits où la semaine commence le dimanche ***** Sauf l'année ISO qui peut commencer à partir du 29 décembre, ****** Sauf les années bissextiles.
  4. FUSEAUX HORREUR • Katmandou • Brasilia • Crimée, Gaza •

    Australie 4
  5. THIS IS MADNESS 5 This is Australiaaaaaaaaa !

  6. LES BESOINS • Savoir quelle heure il est à un

    endroit • Savoir se déplacer dans le temps et l’espace • Faire fi de toutes les incongruités du calcul de l’heure 6
  7. LES OUTILS DE PYTHON • datetime :
 datetime, date, time,

    timedelta, tzinfo • time • calendar 7
  8. DATETIME • Naïf par défaut • Pas d’implémentation de fuseaux

    horaires 8
  9. Python documentation « Supporting timezones at whatever level of detail

    is required is up to the application. The rules for time adjustment across the world are more political than rational, and there is no standard suitable for every application. » 9
  10. PYTZ ET TZ DATA 10 TZ Data Arthur David Olson

    Paul Eggert Pytz Stuart Bishop
  11. PYTZ.LOCALIZE & DATETIME.ASTIMEZONE >>> ep = pytz.timezone("Europe/Paris") >>> ep.localize(datetime(2015, 10,

    17)) datetime.datetime(2015, 10, 17, 0, 0, tzinfo=<DstTzInfo 'Europe/Paris' CEST+2:00:00 DST>) >>> ep.localize(datetime(2015, 11, 17)) datetime.datetime(2015, 11, 17, 0, 0, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>) >>> ep.localize(datetime(2015, 11, 17)).astimezone( pytz.timezone("Asia/Katmandu")) datetime.datetime(2015, 11, 17, 4, 45, tzinfo=<DstTzInfo 'Asia/ Katmandu' NPT+5:45:00 STD>) 11
  12. LES ÉPAULES DES GÉANTS • dateutil • Arrow • DeLorean

    12
  13. ATTENTION • ISO 8601 : la bonne idée ? 2015-09-16

    20:32:45+01:00 13
  14. QUELQUES RÈGLES • Jamais de naïf ! • UTC, partout,

    tant que c'est possible • Quand on a une date, toujours savoir quelle est la timezone de référence (même si on connait le décalage UTC) • ♥ opensource 14
  15. 15 Merci Envie d'entendre plus d'histoires sur le temps ?

    Retrouvez-moi après les talks Sur le même sujet : le blog de @juldanjou http://bit.ly/paris-py-7-juldanjou Le XKCD pertinent : xkcd://1061 Retrouvez ces slides sur http://bit.ly/paris-py-7-dt
  16. JAVASCRIPT ? 16