Struct core.time.Duration
Represents a duration of time of weeks or less (kept internally as hnsecs). (e.g. 22 days or 700 seconds).
struct Duration
;
It is used when representing a duration of time - such as how long to
sleep with core
.
In std.datetime, it is also used as the result of various arithmetic operations on time points.
Use the dur
function or one of its non-generic aliases to create
Duration
s.
It's not possible to create a Duration of months or years, because the
variable number of days in a month or year makes it impossible to convert
between months or years and smaller units without a specific date. So,
nothing uses Duration
s when dealing with months or years. Rather,
functions specific to months and years are defined. For instance,
std
has add!"years"
and add!"months"
for adding
years and months rather than creating a Duration of years or months and
adding that to a std
. But Duration is used when dealing
with weeks or smaller.
Properties
Name | Type | Description |
---|---|---|
isNegative [get]
|
bool | Returns whether this Duration is negative.
|
max [get]
|
Duration | Largest Duration possible.
|
min [get]
|
Duration | Most negative Duration possible.
|
total [get]
|
long | Returns the total number of the given units in this Duration .
So, unlike split , it does not strip out the larger units.
|
zero [get]
|
Duration | A Duration of 0 . It's shorter than doing something like
dur!"seconds"(0) and more explicit than Duration .
|
Methods
Name | Description |
---|---|
opBinary
|
Adds, subtracts or calculates the modulo of two durations. |
opBinary
|
Multiplies or divides the duration by an integer value. |
opBinary
|
Divides two durations. |
opBinaryRight
|
Adds or subtracts two durations. |
opBinaryRight
|
Multiplies an integral value and a Duration .
|
opCast
|
Returns a TickDuration with the same number of hnsecs as this
Duration .
Note that the conventional way to convert between Duration and
TickDuration is using to , e.g.:
duration
|
opCast
|
Allow Duration to be used as a boolean. |
opCmp
|
Compares this Duration with the given Duration .
|
opOpAssign
|
Adds, subtracts or calculates the modulo of two durations as well as
assigning the result to this Duration .
|
opOpAssign
|
Multiplies/Divides the duration by an integer value as well as
assigning the result to this Duration .
|
opUnary
|
Returns the negation of this Duration .
|
toString
|
Converts this Duration to a string .
|
Templates
Name | Description |
---|---|
split
|
Splits out the Duration into the given units. |
Examples
import std .datetime;
assert(dur!"days"(12) == dur!"hnsecs"(10_368_000_000_000L));
assert(dur!"hnsecs"(27) == dur!"hnsecs"(27));
assert(std .datetime .Date(2010, 9, 7) + dur!"days"(5) ==
std .datetime .Date(2010, 9, 12));
assert(days(-12) == dur!"hnsecs"(-10_368_000_000_000L));
assert(hnsecs(-27) == dur!"hnsecs"(-27));
assert(std .datetime .Date(2010, 9, 7) - std .datetime .Date(2010, 10, 3) ==
days(-26));
Example
import core .time;
// using the dur template
auto numDays = dur!"days"(12);
// using the days function
numDays = days(12);
// alternatively using UFCS syntax
numDays = 12 .days;
auto myTime = 100 .msecs + 20_000 .usecs + 30_000 .hnsecs;
writeln(myTime); // 123.msecs
Authors
Jonathan M Davis and Kato Shoichi