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
Durations.
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 Durations 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
(rhs)
|
Adds, subtracts or calculates the modulo of two durations. |
opBinary
(value)
|
Multiplies or divides the duration by an integer value. |
opBinary
(rhs)
|
Divides two durations. |
opBinaryRight
(lhs)
|
Adds or subtracts two durations. |
opBinaryRight
(value)
|
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
(rhs)
|
Compares this Duration with the given Duration.
|
opOpAssign
(rhs)
|
Adds, subtracts or calculates the modulo of two durations as well as
assigning the result to this Duration.
|
opOpAssign
(value)
|
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