-- | Dealing with Unix timestamps {-# LANGUAGE PackageImports #-} module Bitcoin.Misc.UnixTime where -------------------------------------------------------------------------------- import Data.Word import "time" Data.Time import "time" Data.Time.Clock.POSIX -- import "old-locale" System.Locale -------------------------------------------------------------------------------- newtype UnixTimeStamp = UnixTimeStamp { fromUnixTimeStamp :: Word32 } deriving (Eq,Ord) instance Show UnixTimeStamp where show ts = "UnixTimeStamp<" ++ isoDateStr ts ++ ">" unixTimeStampToUTC :: UnixTimeStamp -> UTCTime unixTimeStampToUTC (UnixTimeStamp unixstamp) = utctime where ndifftime = fromIntegral unixstamp :: POSIXTime -- type POSIXTime = NominalDiffTime utctime = posixSecondsToUTCTime ndifftime isoDateStr :: UnixTimeStamp -> String isoDateStr unixstamp = formatTime locale "%Y-%m-%d %H:%M:%S" utctime where utctime = unixTimeStampToUTC unixstamp locale = defaultTimeLocale --------------------------------------------------------------------------------