-- you can use haskell-98 standard module: import Time date = fmap show getClockTime -- "Wed Apr 25 19:43:29 CEST 2007" localtime = getClockTime >>= toCalendarTime -- => CalendarTime {ctYear = 2007, ctMonth = April, ctDay = 25, ctHour = 19, ctMin = 46, ctSec = 41, ctPicosec = 214805000000, ctWDay = Wednesday, ctYDay = 114, ctTZName = "CEST", ctTZ = 7200, ctIsDST = True} utc_time = fmap toUTCTime getClockTime -- => CalendarTime {ctYear = 2007, ctMonth = April, ctDay = 25, ctHour = 17, ctMin = 47, ctSec = 59, ctPicosec = 325921000000, ctWDay = Wednesday, ctYDay = 114, ctTZName = "UTC", ctTZ = 0, ctIsDST = False} t = do tm <- localtime putStrLn $ "Today is day " ++ show (ctYDay tm) ++ " of the current year" -- => Today is day 114 of the current year -- or you can use new "time library": import Data.Time date = getCurrentTime -- "2008-04-18 14:11:22.476894 UTC" t = do today <- fmap utctDay getCurrentTime let (year, _, _) = toGregorian today let days = diffDays today (fromGregorian year 0 0) putStrLn $ "Today is day " ++ show days ++ " of the current year" -- => Today is day 108 of the current year |
import Data.Time import System.Locale (defaultTimeLocale) t = do tm <- getCurrentTime let (year, month, day) = toGregorian (utctDay tm) printf "The current date is %04d %02d %02d\n" year month day t2 = do tm <- getCurrentTime return $ "The current date is " ++ show (utctDay tm) -- The current date is 2008-04-18 t3 = fmap (formatTime defaultTimeLocale "%Y-%m-%d") getCurrentTime -- => 2008-04-18 |
import Data.Time import Data.Time.Clock.POSIX -- !! epoch is not the "base" value in Data.Time, so do not use it unless you !! -- !! really need it !! -- if you want epoch, use: t = getPOSIXTime -- 1208529250.856017s -- if you want to get epoch from a time, use: t2 = fmap utcTimeToPOSIXSeconds getCurrentTime -- 1208529250.856017s |
import System.Time import Data.Time import Data.Time.Clock.POSIX epoch = 111111 t1 = posixSecondsToUTCTime epoch -- 1970-01-02 06:51:51 UTC t2 = timeToTimeOfDay (utctDayTime t1) -- 06:51:51 |
import Data.Time ten_seconds_before = addUTCTime (-10) t = do now <- getCurrentTime return (now, ten_seconds_before now) -- (2008-04-18 14:48:33.075113 UTC, -- 2008-04-18 14:48:23.075113 UTC) -- ten_seconds_before can also be written: ten_seconds_before (UTCTime day time) = UTCTime day (time - 10) ten_seconds_before t = t { utctDayTime = utctDayTime t - 10 } birth_date = fromGregorian 1973 1 18 t = "Nat was 55 days old on: " ++ show (addDays 55 birth_date) -- Nat was 55 days old on: 1973-03-14 |
import Data.Time import Data.Time.Clock.POSIX bree = UTCTime (fromGregorian 1981 6 16) (timeOfDayToTime $ TimeOfDay 4 35 25) -- 1981-06-16 04:35:25 UTC nat = UTCTime (fromGregorian 1973 1 18) (timeOfDayToTime $ TimeOfDay 3 45 50) -- 1973-01-18 03:45:50 UTC -- or simpler: bree' = read "1981-06-16 04:35:25" :: UTCTime nat' = read "1973-01-18 03:45:50" :: UTCTime difference = diffUTCTime bree nat / posixDayLength t = "There were " ++ (show $ round difference) ++ " days between Nat and Bree" -- There were 3071 days between Nat and Bree toFloat n = realToFrac n :: Float t2 = printf "There were %.2f days between Nat and Bree" (toFloat difference) :: String -- There were 3071.03 days between Nat and Bree |