Aktuelles Jahr / Monat / Tag in Haskell ermitteln

Problem:

Mit Haskell möchtest du das aktuelle Jahr, den Monat und den Tag (für die UTC-Zeitzone) als ganzzahlige Werte erhalten.

Lösung

Für diese Aufgabe benötigst du das time-Paket. Verwende cabal install time zur Installation.

Unser Code ähnelt diesem HaskellWiki-Eintrag, stellt jedoch ein eigenständiges ausführbares Programm bereit (verwende runghc <dateiname>.hs zur Ausführung), das für Anfänger lesbarer ist.

UTC-Zeit:

Beachte, dass die UTC-Zeit je nach Zeitzone von deiner lokalen Zeit abweichen kann.

get_current_date.hs
import Data.Time.Clock
import Data.Time.Calendar

main = do
    now <- getCurrentTime
    let (year, month, day) = toGregorian $ utctDay now
    putStrLn $ "Year: " ++ show year
    putStrLn $ "Month: " ++ show month
    putStrLn $ "Day: " ++ show day

Lokale Zeit:

Es ist auch möglich, deine aktuelle lokale Zeit unter Verwendung der Standardzeitzone deines Systems zu ermitteln:

get_current_local_date.hs
import Data.Time.Clock
import Data.Time.Calendar
import Data.Time.LocalTime

main = do
    now <- getCurrentTime
    timezone <- getCurrentTimeZone
    let zoneNow = utcToLocalTime timezone now
    let (year, month, day) = toGregorian $ localDay zoneNow
    putStrLn $ "Year: " ++ show year
    putStrLn $ "Month: " ++ show month
    putStrLn $ "Day: " ++ show day

Die Sommerzeit wird bei dieser Methode ebenfalls berücksichtigt.


Check out similar posts by category: Haskell