Analysera ett datum från en sträng

Elm:
Analysera ett datum från en sträng

Hur man gör:

Elm har inte inbyggda funktioner som är lika robusta som vissa andra språk för datumtolkning, och förlitar sig huvudsakligen på Javascript-interoperabilitet eller bibliotek för mer komplexa operationer. Du kan dock använda paketet elm/time för grundläggande tolkning, och för mer komplexa behov rekommenderas ofta det tredjepartsbiblioteket justinmimbs/date.

Tolkning med elm/time:

elm/time tillhandahåller modulen Time, som låter dig arbeta med tidsstämplar istället för datum som är läsbara för människor. Även om den inte direkt tolkar datum från strängar, kan du omvandla en ISO 8601-sträng till en POSIX-tidsstämpel, som du sedan kan arbeta med.

import Time exposing (Posix)

-- Antag att du har en ISO 8601 datumsträng
isoDateStr : String
isoDateStr = "2023-01-01T00:00:00Z"

-- Konvertera den till en POSIX-tidsstämpel (denna funktion returnerar ett `Result`)
parsedDate : Result String Posix
parsedDate = Time.fromIsoString8601 isoDateStr

-- Exempel på utdata: Ok <posix tidsvärde>

Tolkning med justinmimbs/date:

För mer invecklad tolkning, som att hantera icke-ISO-format, är justinmimbs/date-biblioteket ett utmärkt val. Så här kan du använda det för att tolka en anpassad datumsträng:

  1. Se till att du har installerat biblioteket:
elm install justinmimbs/date
  1. Använd funktionen Date.fromString för att tolka anpassade datumformat:
import Date
import Result exposing (Result(..))

-- Låt oss säga att du har ett anpassat datumsträngformat `dd-MM-yyyy`
customDateStr : String
customDateStr = "01-01-2023"

-- Funktion för att tolka det anpassade formatet
parseDate : String -> Result String Date.Date
parseDate = Date.fromString "dd-MM-yyyy"

-- Exempelanvändning
parsedCustomDate : Result String Date.Date
parsedCustomDate = parseDate customDateStr

-- Exempel på utdata: Ok (Date.fromCalendarDate 2023 Jan 1)

I dessa exempel inkapslar Result-typen antingen en framgångsrik tolkning som ger ett datum (Ok) eller ett fel (Err), vilket möjliggör robust felhantering i dina Elm-applikationer.