Data.Time.Clock

time-1.6: A time library

Safe Haskell | Safe
Language | Haskell2010

Data.Time.Clock

Contents

- Universal Time
- Absolute intervals
- UTC

Description

Types and functions for UTC and UT1

Synopsis

- newtype UniversalTime = ModJulianDate {
  - getModJulianDate :: Rational
  }
- data DiffTime
- secondsToDiffTime :: Integer -> DiffTime
- picosecondsToDiffTime :: Integer -> DiffTime
- diffTimeToPicoseconds :: DiffTime -> Integer
- data UTCTime = UTCTime {
  - utctDay :: Day
  - utctDayTime :: DiffTime
  }
- data NominalDiffTime
- addUTCTime :: NominalDiffTime -> UTCTime -> UTCTime
- diffUTCTime :: UTCTime -> UTCTime -> NominalDiffTime
- getCurrentTime :: IO UTCTime

# Universal Time

Time as measured by the earth.

newtype UniversalTime Source

The Modified Julian Date is the day with the fraction of the day, measured from UT midnight. It's used to represent UT1, which is time as measured by the earth's rotation, adjusted for various wobbles.

Constructors

ModJulianDate |
Fields getModJulianDate :: Rational

Instances

Eq UniversalTime |
Methods (==) :: UniversalTime -> UniversalTime -> Bool (/=) :: UniversalTime -> UniversalTime -> Bool
Data UniversalTime |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UniversalTime -> c UniversalTime Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UniversalTime Source toConstr :: UniversalTime -> Constr Source dataTypeOf :: UniversalTime -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c UniversalTime) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UniversalTime) Source gmapT :: (forall b. Data b => b -> b) -> UniversalTime -> UniversalTime Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UniversalTime -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UniversalTime -> r Source gmapQ :: (forall d. Data d => d -> u) -> UniversalTime -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> UniversalTime -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> UniversalTime -> m UniversalTime Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UniversalTime -> m UniversalTime Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UniversalTime -> m UniversalTime Source
Ord UniversalTime |
Methods compare :: UniversalTime -> UniversalTime -> Ordering (<) :: UniversalTime -> UniversalTime -> Bool (<=) :: UniversalTime -> UniversalTime -> Bool (>) :: UniversalTime -> UniversalTime -> Bool (>=) :: UniversalTime -> UniversalTime -> Bool max :: UniversalTime -> UniversalTime -> UniversalTime min :: UniversalTime -> UniversalTime -> UniversalTime
NFData UniversalTime |
Methods rnf :: UniversalTime -> () Source
ParseTime UniversalTime |
Methods buildTime :: TimeLocale -> [(Char, String)] -> Maybe UniversalTime Source
FormatTime UniversalTime |
Methods formatCharacter :: Char -> Maybe (TimeLocale -> Maybe NumericPadOption -> UniversalTime -> String) Source

# Absolute intervals

data DiffTime Source

This is a length of time, as measured by a clock. Conversion functions will treat it as seconds. It has a precision of 10^-12 s.

Instances

Enum DiffTime |
Methods succ :: DiffTime -> DiffTime Source pred :: DiffTime -> DiffTime Source toEnum :: Int -> DiffTime Source fromEnum :: DiffTime -> Int Source enumFrom :: DiffTime -> [DiffTime] Source enumFromThen :: DiffTime -> DiffTime -> [DiffTime] Source enumFromTo :: DiffTime -> DiffTime -> [DiffTime] Source enumFromThenTo :: DiffTime -> DiffTime -> DiffTime -> [DiffTime] Source
Eq DiffTime |
Methods (==) :: DiffTime -> DiffTime -> Bool (/=) :: DiffTime -> DiffTime -> Bool
Fractional DiffTime |
Methods (/) :: DiffTime -> DiffTime -> DiffTime Source recip :: DiffTime -> DiffTime Source fromRational :: Rational -> DiffTime Source
Data DiffTime |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DiffTime -> c DiffTime Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DiffTime Source toConstr :: DiffTime -> Constr Source dataTypeOf :: DiffTime -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c DiffTime) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DiffTime) Source gmapT :: (forall b. Data b => b -> b) -> DiffTime -> DiffTime Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DiffTime -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DiffTime -> r Source gmapQ :: (forall d. Data d => d -> u) -> DiffTime -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> DiffTime -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> DiffTime -> m DiffTime Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DiffTime -> m DiffTime Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DiffTime -> m DiffTime Source
Num DiffTime |
Methods (+) :: DiffTime -> DiffTime -> DiffTime Source (-) :: DiffTime -> DiffTime -> DiffTime Source (*) :: DiffTime -> DiffTime -> DiffTime Source negate :: DiffTime -> DiffTime Source abs :: DiffTime -> DiffTime Source signum :: DiffTime -> DiffTime Source fromInteger :: Integer -> DiffTime Source
Ord DiffTime |
Methods compare :: DiffTime -> DiffTime -> Ordering (<) :: DiffTime -> DiffTime -> Bool (<=) :: DiffTime -> DiffTime -> Bool (>) :: DiffTime -> DiffTime -> Bool (>=) :: DiffTime -> DiffTime -> Bool max :: DiffTime -> DiffTime -> DiffTime min :: DiffTime -> DiffTime -> DiffTime
Real DiffTime |
Methods toRational :: DiffTime -> Rational Source
RealFrac DiffTime |
Methods properFraction :: Integral b => DiffTime -> (b, DiffTime) Source truncate :: Integral b => DiffTime -> b Source round :: Integral b => DiffTime -> b Source ceiling :: Integral b => DiffTime -> b Source floor :: Integral b => DiffTime -> b Source
Show DiffTime |
Methods showsPrec :: Int -> DiffTime -> ShowS Source show :: DiffTime -> String Source showList :: [DiffTime] -> ShowS Source
NFData DiffTime |
Methods rnf :: DiffTime -> () Source

secondsToDiffTime :: Integer -> DiffTime Source

Create a `DiffTime` which represents an integral number of seconds.

picosecondsToDiffTime :: Integer -> DiffTime Source

Create a `DiffTime` from a number of picoseconds.

diffTimeToPicoseconds :: DiffTime -> Integer Source

Get the number of picoseconds in a `DiffTime`.

# UTC

UTC is time as measured by a clock, corrected to keep pace with the earth by adding or removing occasional seconds, known as "leap seconds". These corrections are not predictable and are announced with six month's notice. No table of these corrections is provided, as any program compiled with it would become out of date in six months.

If you don't care about leap seconds, use UTCTime and NominalDiffTime for your clock calculations, and you'll be fine.

data UTCTime Source

This is the simplest representation of UTC. It consists of the day number, and a time offset from midnight. Note that if a day has a leap second added to it, it will have 86401 seconds.

Constructors

UTCTime |
Fields utctDay :: Day the day utctDayTime :: DiffTime the time from midnight, 0 <= t < 86401s (because of leap-seconds)

Instances

Eq UTCTime |
Methods (==) :: UTCTime -> UTCTime -> Bool (/=) :: UTCTime -> UTCTime -> Bool
Data UTCTime |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UTCTime -> c UTCTime Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UTCTime Source toConstr :: UTCTime -> Constr Source dataTypeOf :: UTCTime -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c UTCTime) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UTCTime) Source gmapT :: (forall b. Data b => b -> b) -> UTCTime -> UTCTime Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UTCTime -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UTCTime -> r Source gmapQ :: (forall d. Data d => d -> u) -> UTCTime -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> UTCTime -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> UTCTime -> m UTCTime Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UTCTime -> m UTCTime Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UTCTime -> m UTCTime Source
Ord UTCTime |
Methods compare :: UTCTime -> UTCTime -> Ordering (<) :: UTCTime -> UTCTime -> Bool (<=) :: UTCTime -> UTCTime -> Bool (>) :: UTCTime -> UTCTime -> Bool (>=) :: UTCTime -> UTCTime -> Bool max :: UTCTime -> UTCTime -> UTCTime min :: UTCTime -> UTCTime -> UTCTime
NFData UTCTime |
Methods rnf :: UTCTime -> () Source
ParseTime UTCTime |
Methods buildTime :: TimeLocale -> [(Char, String)] -> Maybe UTCTime Source
FormatTime UTCTime |
Methods formatCharacter :: Char -> Maybe (TimeLocale -> Maybe NumericPadOption -> UTCTime -> String) Source

data NominalDiffTime Source

This is a length of time, as measured by UTC. Conversion functions will treat it as seconds. It has a precision of 10^-12 s. It ignores leap-seconds, so it's not necessarily a fixed amount of clock time. For instance, 23:00 UTC + 2 hours of NominalDiffTime = 01:00 UTC (+ 1 day), regardless of whether a leap-second intervened.

Instances

Enum NominalDiffTime |
Methods succ :: NominalDiffTime -> NominalDiffTime Source pred :: NominalDiffTime -> NominalDiffTime Source toEnum :: Int -> NominalDiffTime Source fromEnum :: NominalDiffTime -> Int Source enumFrom :: NominalDiffTime -> [NominalDiffTime] Source enumFromThen :: NominalDiffTime -> NominalDiffTime -> [NominalDiffTime] Source enumFromTo :: NominalDiffTime -> NominalDiffTime -> [NominalDiffTime] Source enumFromThenTo :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime -> [NominalDiffTime] Source
Eq NominalDiffTime |
Methods (==) :: NominalDiffTime -> NominalDiffTime -> Bool (/=) :: NominalDiffTime -> NominalDiffTime -> Bool
Fractional NominalDiffTime |
Methods (/) :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime Source recip :: NominalDiffTime -> NominalDiffTime Source fromRational :: Rational -> NominalDiffTime Source
Data NominalDiffTime |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NominalDiffTime -> c NominalDiffTime Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NominalDiffTime Source toConstr :: NominalDiffTime -> Constr Source dataTypeOf :: NominalDiffTime -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c NominalDiffTime) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NominalDiffTime) Source gmapT :: (forall b. Data b => b -> b) -> NominalDiffTime -> NominalDiffTime Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NominalDiffTime -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NominalDiffTime -> r Source gmapQ :: (forall d. Data d => d -> u) -> NominalDiffTime -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> NominalDiffTime -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> NominalDiffTime -> m NominalDiffTime Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NominalDiffTime -> m NominalDiffTime Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NominalDiffTime -> m NominalDiffTime Source
Num NominalDiffTime |
Methods (+) :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime Source (-) :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime Source (*) :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime Source negate :: NominalDiffTime -> NominalDiffTime Source abs :: NominalDiffTime -> NominalDiffTime Source signum :: NominalDiffTime -> NominalDiffTime Source fromInteger :: Integer -> NominalDiffTime Source
Ord NominalDiffTime |
Methods compare :: NominalDiffTime -> NominalDiffTime -> Ordering (<) :: NominalDiffTime -> NominalDiffTime -> Bool (<=) :: NominalDiffTime -> NominalDiffTime -> Bool (>) :: NominalDiffTime -> NominalDiffTime -> Bool (>=) :: NominalDiffTime -> NominalDiffTime -> Bool max :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime min :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime
Real NominalDiffTime |
Methods toRational :: NominalDiffTime -> Rational Source
RealFrac NominalDiffTime |
Methods properFraction :: Integral b => NominalDiffTime -> (b, NominalDiffTime) Source truncate :: Integral b => NominalDiffTime -> b Source round :: Integral b => NominalDiffTime -> b Source ceiling :: Integral b => NominalDiffTime -> b Source floor :: Integral b => NominalDiffTime -> b Source
Show NominalDiffTime |
Methods showsPrec :: Int -> NominalDiffTime -> ShowS Source show :: NominalDiffTime -> String Source showList :: [NominalDiffTime] -> ShowS Source
NFData NominalDiffTime |
Methods rnf :: NominalDiffTime -> () Source

addUTCTime :: NominalDiffTime -> UTCTime -> UTCTime Source

addUTCTime a b = a + b

diffUTCTime :: UTCTime -> UTCTime -> NominalDiffTime Source

diffUTCTime a b = a - b

getCurrentTime :: IO UTCTime Source

Get the current UTC time from the system clock.