Get current year / month / day in Haskell
Problem:
Using haskell, you want to get the current year, month and day (for the UTC time zone) as integral values.
Solution:
You need the time package for this task. Use cabal install time
to install.
Our code is similar to this HaskellWiki entry, however it provides a standalone runnable program (use runghc <filename>.hs
to execute) which is more readable for beginners.
UTC time:
Note that the UTC time might differ from your local time depending on your timezone.
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
Local time:
It is also possible to get your current local time using your system’s default timezone:
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
Daylight saving time is also taken into account using this method.