Een datum in de toekomst of het verleden berekenen

Elm:
Een datum in de toekomst of het verleden berekenen

Hoe:

De Time module van Elm en het justinmimbs/time-extra pakket laten ons gemakkelijk met datums knoeien.

import Time exposing (Posix)
import Time.Extra as TimeExtra

--calculateDate : Int -> Posix -> Posix
-- @deltaDays: aantal dagen om toe te voegen (negatief om af te trekken)
-- @fromDate: startdatum in Posix-formaat

calculateDate deltaDays fromDate =
    TimeExtra.add TimeExtra.days deltaDays fromDate

-- Gebruik
-- Vergeet niet, Elm telt tijd in milliseconden sinds het Unix-tijdperk.

sampleDate = Time.millisToPosix 1580515200000  -- 1 Februari 2020 00:00:00 UTC
futureDate = calculateDate 10 sampleDate       -- Voegt 10 dagen toe
pastDate = calculateDate -15 sampleDate        -- Trekt 15 dagen af

-- voorbeelduitvoer:
-- futureDate -> 1581552000000  -- 12 Februari 2020 00:00:00 UTC
-- pastDate -> 1580006400000    -- 17 Januari 2020 00:00:00 UTC

Diepgaand

Vroeger was het omgaan met datums in programmeren een pijn. Verschillende systemen, formaten en tijdzones gaven iedereen hoofdpijn. Elm’s ‘Time’ module, gebaseerd op het Unix-tijdsysteem (milliseconden sinds 1970), standaardiseert dit. Het pakket justinmimbs/time-extra vereenvoudigt verder het uitvoeren van operaties op datums, zoals het toevoegen of aftrekken van dagen.

Alternatieven? Andere talen hebben hun eigen bibliotheken, zoals Python’s datetime of JavaScript’s Date. Maar Elm’s aanpak biedt sterke typen en zuiverheid, waardoor bugs worden verminderd.

Naast het toevoegen van dagen, kunt u ook werken met maanden, jaren, of zelfs uren en minuten. De functies in Elm en in pakketten zoals time-extra focussen op onveranderlijkheid en zuivere functies—dit betekent geen bijeffecten. Wanneer je een nieuwe datum berekent, blijft de oorspronkelijke ongewijzigd.

Zie Ook