Beräkna ett datum i framtiden eller förflutenheten

Elm:
Beräkna ett datum i framtiden eller förflutenheten

Så här gör du:

Elm ger inget inbyggt stöd för datum och tid, så vi lutar oss mot elm/time paketet. Här kommer en kodsnutt för att räkna ut framtida och förflutna datum:

import Time exposing (..)
import Task

calculateFutureDate : Posix -> Time.Zone -> Int -> Task.Task x Posix
calculateFutureDate baseDate zone daysToAdd =
    Task.succeed baseDate
        |> Task.map (\date -> add (daysToMillis daysToAdd) date)
        |> Task.map (\date -> toTimezone zone date)

daysToMillis : Int -> Int
daysToMillis days =
    days * 24 * 60 * 60 * 1000

-- Användning:
-- Antag att `zone` är din lokala tidszon och `now` är det nuvarande Posix-värdet.
-- calculateFutureDate now zone 10 skulle beräkna datumet 10 dagar framåt.

Sample output är beroende av den aktuella tidszonen och basdatumet.

Fördjupning:

Tidigare, användes enkla tidsberäkningar i Elm, men tidszonshantering komplicerade saker. Med elm/time, är det nu enklare och mer robust. Alternativ till elm/time inkluderar att använda JavaScript direkt via ports. För implementation, var medveten om att tidszonerna påverkar resultaten, så det är viktigt att alltid specificera och arbeta inom en korrekt tidszon.

Se även: