core.time

Module containing core time functionality, such as Duration (which represents a duration of time) or MonoTime (which represents a timestamp of the system's monotonic clock).

Various functions take a string (or strings) to represent a unit of time (e.g. convert!("days", "hours")(numDays)). The valid strings to use with such functions are "years", "months", "weeks", "days", "hours", "minutes", "seconds", "msecs" (milliseconds), "usecs" (microseconds), "hnsecs" (hecto-nanoseconds - i.e. 100 ns) or some subset thereof. There are a few functions that also allow "nsecs", but very little actually has precision greater than hnsecs.

Cheat Sheet
SymbolDescription
Types
DurationRepresents a duration of time of weeks or less (kept internally as hnsecs). (e.g. 22 days or 700 seconds).
TickDurationRepresents a duration of time in system clock ticks, using the highest precision that the system provides.
MonoTimeRepresents a monotonic timestamp in system clock ticks, using the highest precision that the system provides.
FracSecRepresents fractional seconds (portions of time smaller than a second).
Functions
convertGeneric way of converting between two time units.
durAllows constructing a Duration from the given time units with the given length.
weeks days hours
minutes seconds msecs
usecs hnsecs nsecs
Convenience aliases for dur.
absReturns the absolute value of a duration.
Conversions
From DurationFrom TickDurationFrom FracSecFrom units
To Duration-tickDuration..to!Duration()-dur!"msecs"(5) or 5.msecs()
To TickDurationduration..to!TickDuration()--TickDuration.from!"msecs"(msecs)
To FracSecduration.fracSec--FracSec.from!"msecs"(msecs)
To unitsduration.total!"days"tickDuration.msecsfracSec.msecsconvert!("days", "msecs")(msecs)

Public Imports

core.sys.darwin.mach.kern_return
public import core.sys.darwin.mach.kern_return;

Members

Aliases

MonoTime
alias MonoTime = MonoTimeImpl!(ClockType.normal)

alias for MonoTimeImpl instantiated with ClockType.normal. This is what most programs should use. It's also what much of MonoTimeImpl uses in its documentation (particularly in the examples), because that's what's going to be used in most code.

Classes

TimeException
class TimeException

Exception type used by core.time.

Enums

ClockType
enum ClockType

What type of clock to use with MonoTime / MonoTimeImpl or std.datetime.Clock.currTime. They default to ClockType.normal, and most programs do not need to ever deal with the others.

Functions

abs
Duration abs(Duration duration)
TickDuration abs(TickDuration duration)

Returns the absolute value of a duration.

convClockFreq
long convClockFreq(long ticks, long srcTicksPerSecond, long dstTicksPerSecond)

Converts the given time from one clock frequency/resolution to another.

convert
long convert(long value)

Generic way of converting between two time units. Conversions to smaller units use truncating division. Years and months can be converted to each other, small units can be converted to each other, but years and months cannot be converted to or from smaller units (due to the varying number of days in a month or year).

dur
Duration dur(long length)

These allow you to construct a Duration from the given time units with the given length.

nsecsToTicks
long nsecsToTicks(long ticks)

The reverse of ticksToNSecs.

ticksToNSecs
long ticksToNSecs(long ticks)

Convenience wrapper around convClockFreq which converts ticks at a clock frequency of MonoTime.ticksPerSecond to nanoseconds.

to
T to(D td)

Converts a TickDuration to the given units as either an integral value or a floating point value.

Structs

Duration
struct Duration

Represents a duration of time of weeks or less (kept internally as hnsecs). (e.g. 22 days or 700 seconds).

MonoTimeImpl
struct MonoTimeImpl(ClockType clockType)

Represents a timestamp of the system's monotonic clock.

TickDuration
struct TickDuration

Warning: TickDuration will be deprecated in the near future (once all uses of it in Phobos have been deprecated). Please use MonoTime for the cases where a monotonic timestamp is needed and Duration when a duration is needed, rather than using TickDuration. It has been decided that TickDuration is too confusing (e.g. it conflates a monotonic timestamp and a duration in monotonic clock ticks) and that having multiple duration types is too awkward and confusing.

Meta

Authors

Jonathan M Davis and Kato Shoichi

Suggestion Box / Bug Report