Haskell:
Een datum converteren naar een string
Hoe:
In Haskell gebruik je de formatTime functie uit de module Data.Time.Format voor deze taak. Laten we direct duiken in wat code:
import Data.Time
import Data.Time.Format (formatTime, defaultTimeLocale)
main :: IO ()
main = do
-- Pak de huidige tijd
currentTime <- getCurrentTime
let currentZone = utc
-- Zet UTC tijd om in een lokaal tijdsobject
localTime = utcToLocalTime currentZone currentTime
-- Formatteer de datum als "YYYY-MM-DD"
dateString = formatTime defaultTimeLocale "%F" localTime
putStrLn dateStringEn dit is wat je als uitvoer zou kunnen zien, afhankelijk van de huidige datum:
2023-04-01Diepere Duik
Teruggaand naar de vroege dagen van programmeren, is het omzetten van datums naar strings altijd een kwestie van praktische bruikbaarheid geweest. In Haskell danken we onze datum- en tijdsbehandeling aan de Data.Time bibliotheek, die geïnspireerd was door de functionaliteit en verbeteringen ten opzichte van oudere bibliotheken zoals old-time.
Er zijn alternatieven voor formatTime, zoals het gebruik van show om direct een datum naar een string te converteren, maar dit geeft je geen aangepaste formatteringsopties. De formatTime functie is rijk, ondersteunend aan een verscheidenheid van formaten die in lijn liggen met de strftime functiepatronen van C. Het is flexibel en locatiebewust, met defaultTimeLocale of andere locales om datums te formatteren volgens culturele conventies.
Wat betreft de implementatie, de functies in Data.Time.Format zijn puur, wat betekent dat ze niet vertrouwen op of bijeffecten veroorzaken. Dit sluit aan bij het ethos van functioneel programmeren in Haskell, dat streeft naar functies die voorspelbaar zijn en waarvan de uitkomsten alleen bepaald worden door hun invoer.
Zie Ook
Voor uitgebreider werk over datums en tijden in Haskell, bekijk het volgende:
- De documentatie van de
Data.Timemodule: https://hackage.haskell.org/package/time-1.9.3/docs/Data-Time.html - Details over
strftimeformatteerstrings, dieformatTimeimiteert: http://man7.org/linux/man-pages/man3/strftime.3.html - Haskell’s benadering van IO en puurheid: https://www.haskell.org/tutorial/io.html