Calcul d'une date future ou passée

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