HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Moduletime-units-1.0.0Haskell98

Data.Time.Units

This module defines types for many useful time periods, as well as mechanisms for converting between them.

  • 12 types
  • 1 class
  • 4 values
  • Packagetime-units-1.0.0
  • Exports17
  • LanguageHaskell98
  • LicenceBSD-3-Clause
  • SourceUnits.hs
classclass TimeUnit a where
#

A generic class that describes all the units of time. We use microseconds here because that tends to be what GHC (at least) tends to use as its system-level minimum tick size.

Methods

  • toMicroseconds :: a -> Integer

    Converts the given unit of time into microseconds, flooring the value if it comes to a fractional number of microseconds. (In other words: be careful, you may lose precision!)

  • fromMicroseconds :: Integer -> a

    Converts the given number of microseconds into the unit of time, flooring the value if it comes to a fraction number of the given unit. (In other words: be careful, you may lose precision!)

Instances12TimeUnit, …
newtypenewtype Attosecond
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
newtypenewtype Femtosecond
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
newtypenewtype Picosecond
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
newtypenewtype Nanosecond
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
newtypenewtype Microsecond
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
newtypenewtype Millisecond
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
newtypenewtype Second
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
  • Enum SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Eq SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Integral SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Data SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Num SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Ord SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Read SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Real SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Show SecondDefined in time-units-1.0.0 · Data.Time.Units
  • Ix SecondDefined in time-units-1.0.0 · Data.Time.Units
  • TimeUnit SecondDefined in time-units-1.0.0 · Data.Time.Units
newtypenewtype Minute
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
  • Enum MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Eq MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Integral MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Data MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Num MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Ord MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Read MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Real MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Show MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • Ix MinuteDefined in time-units-1.0.0 · Data.Time.Units
  • TimeUnit MinuteDefined in time-units-1.0.0 · Data.Time.Units
newtypenewtype Hour
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
  • Enum HourDefined in time-units-1.0.0 · Data.Time.Units
  • Eq HourDefined in time-units-1.0.0 · Data.Time.Units
  • Integral HourDefined in time-units-1.0.0 · Data.Time.Units
  • Data HourDefined in time-units-1.0.0 · Data.Time.Units
  • Num HourDefined in time-units-1.0.0 · Data.Time.Units
  • Ord HourDefined in time-units-1.0.0 · Data.Time.Units
  • Read HourDefined in time-units-1.0.0 · Data.Time.Units
  • Real HourDefined in time-units-1.0.0 · Data.Time.Units
  • Show HourDefined in time-units-1.0.0 · Data.Time.Units
  • Ix HourDefined in time-units-1.0.0 · Data.Time.Units
  • TimeUnit HourDefined in time-units-1.0.0 · Data.Time.Units
newtypenewtype Day
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
  • Enum DayDefined in time-units-1.0.0 · Data.Time.Units
  • Eq DayDefined in time-units-1.0.0 · Data.Time.Units
  • Integral DayDefined in time-units-1.0.0 · Data.Time.Units
  • Data DayDefined in time-units-1.0.0 · Data.Time.Units
  • Num DayDefined in time-units-1.0.0 · Data.Time.Units
  • Ord DayDefined in time-units-1.0.0 · Data.Time.Units
  • Read DayDefined in time-units-1.0.0 · Data.Time.Units
  • Real DayDefined in time-units-1.0.0 · Data.Time.Units
  • Show DayDefined in time-units-1.0.0 · Data.Time.Units
  • Ix DayDefined in time-units-1.0.0 · Data.Time.Units
  • TimeUnit DayDefined in time-units-1.0.0 · Data.Time.Units
newtypenewtype Week
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
  • Enum WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Eq WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Integral WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Data WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Num WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Ord WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Read WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Real WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Show WeekDefined in time-units-1.0.0 · Data.Time.Units
  • Ix WeekDefined in time-units-1.0.0 · Data.Time.Units
  • TimeUnit WeekDefined in time-units-1.0.0 · Data.Time.Units
newtypenewtype Fortnight
#
Instances11Enum, Eq, Integral, Data, Num, Ord, …
valueaddTime :: (TimeUnit a, TimeUnit b, TimeUnit c) => a -> b -> c
#

Add two times together to get a useful third time unit. As per usual, you'll want to make sure that you are careful regarding precision. This function goes through microseconds as an intermediary form.

valuesubTime :: (TimeUnit a, TimeUnit b, TimeUnit c) => a -> b -> c
#

Subtract the second time from the first, to get a useful third time unit. As per usual, you'll want to make sure that you are careful regarding precision. This function goes through microseconds as an intermediary form.

valueconvertUnit :: (TimeUnit a, TimeUnit b) => a -> b
#

Convert one time unit to another. Note that if you move from a smaller time unit to a larger one, or between two time units smaller than a microsecond, you will lose precision.

valuegetCPUTimeWithUnit :: TimeUnit a => IO a
#

Get the current CPU time in your favorite units. This is probably not very useful in itself, but is likely useful for comparison purposes ...