Elm:
Calcul d'une date future ou passée
How to:
Elm utilise le paquet elm/time
pour gérer les dates. Voici comment on calcule une date dans une semaine:
import Time exposing (Posix)
import Time.Extra exposing (add)
calculateFutureDate : Posix -> Posix
calculateFutureDate date =
add (7 * 24 * 60 * 60 * 1000) date -- Ajoute 7 jours en millisecondes
-- Usage
currentDate : Posix
currentDate = Time.millisToPosix 1615194000000 -- 8 mars 2021 à 00:00:00
futureDate : Posix
futureDate = calculateFutureDate currentDate
-- futureDate est maintenant le 15 mars 2021 à 00:00:00
Pour une date dans le passé, soustrayez le temps:
calculatePastDate : Posix -> Posix
calculatePastDate date =
add (-7 * 24 * 60 * 60 * 1000) date -- Soustrait 7 jours
-- Usage
pastDate : Posix
pastDate = calculatePastDate currentDate
-- pastDate est maintenant le 1 mars 2021 à 00:00:00
Deep Dive
Historiquement, manipuler des dates en programmation est un challenge, cause des différents formats et fuseaux horaires. Elm simplifie ceci avec elm/time
qui utilise Posix
, représentant le temps en millisecondes depuis l’UTC 1970-01-01 00:00:00. Cela évite beaucoup de problèmes classiques de fuseaux horaires.
Niveau alternatives, y’a elm-community/elm-time
mais elm/time
est plus commun et robuste. On pourrait aussi tomber dans les calculs manuels, mais pourquoi se compliquer la vie ?
Pour l’implémentation, Elm traite les données de date et d’heure comme des données immuables. Donc, add
crée une nouvelle instance Posix
plutôt que de modifier l’original, c’est une nuance importante pour la programmation fonctionnelle.
See Also
- Documentation officielle d’Elm sur le temps: package.elm-lang.org/packages/elm/time/latest
- FAQ sur
elm/time
: discourse.elm-lang.org - Un super tutoriel sur les bases de Elm: guide.elm-lang.org