import Data.Time (FormatTime, formatTime, defaultTimeLocale, utcToLocalTime, getCurrentTimeZone, getCurrentTime) formats :: FormatTime t => [t -> String] formats = (formatTime defaultTimeLocale) <$> ["%F", "%A, %B %d, %Y"] main :: IO () main = do t <- pure utcToLocalTime <*> getCurrentTimeZone <*> getCurrentTime putStrLn $ unlines (formats <*> pure t)