std.datetime.date_time.roll
- multiple declarations
- Function DateTime.roll
- Function DateTime.roll
Function DateTime.roll
Adds the given number of units to this DateTime
. A negative number
will subtract.
The difference between rolling and adding is that rolling does not
affect larger units. For instance, rolling a DateTime
one
year
's worth of days gets the exact same DateTime
.
Accepted units are "days"
, "minutes"
, "hours"
,
"minutes"
, and "seconds"
.
Prototype
ref DateTime roll(string units)( long value ) pure nothrow @safe if (units == "days");
Parameters
Name | Description |
---|---|
units | The units to add . |
value | The number of units to add to this DateTime . |
Example
auto dt1 = DateTime(2010, 1, 1, 11, 23, 12); dt1.roll!"days"(1); assert(dt1 == DateTime(2010, 1, 2, 11, 23, 12)); dt1.roll!"days"(365); assert(dt1 == DateTime(2010, 1, 26, 11, 23, 12)); dt1.roll!"days"(-32); assert(dt1 == DateTime(2010, 1, 25, 11, 23, 12)); auto dt2 = DateTime(2010, 7, 4, 12, 0, 0); dt2.roll!"hours"(1); assert(dt2 == DateTime(2010, 7, 4, 13, 0, 0)); auto dt3 = DateTime(2010, 1, 1, 0, 0, 0); dt3.roll!"seconds"(-1); assert(dt3 == DateTime(2010, 1, 1, 0, 0, 59));
Function DateTime.roll
Adds the given number of years or months to this DateTime
. A
negative number will subtract.
The difference between rolling and adding is that rolling does not
affect larger units. Rolling a DateTime
12 months
gets the exact same DateTime
. However, the days can still be
affected due to the differing number of days in each month
.
Because there are no units larger than years, there is no difference between adding and rolling years.
Prototype
ref DateTime roll(string units)( long value, AllowDayOverflow allowOverflow = AllowDayOverflow.yes ) pure nothrow @safe if (units == "years" || units == "months");
Parameters
Name | Description |
---|---|
units | The type of units to add ("years" or "months"). |
value | The number of months or years to add to this
DateTime . |
allowOverflow | Whether the days should be allowed to overflow,
causing the month to increment. |
Example
auto dt1 = DateTime(2010, 1, 1, 12, 33, 33); dt1.roll!"months"(1); assert(dt1 == DateTime(2010, 2, 1, 12, 33, 33)); auto dt2 = DateTime(2010, 1, 1, 12, 33, 33); dt2.roll!"months"(-1); assert(dt2 == DateTime(2010, 12, 1, 12, 33, 33)); auto dt3 = DateTime(1999, 1, 29, 12, 33, 33); dt3.roll!"months"(1); assert(dt3 == DateTime(1999, 3, 1, 12, 33, 33)); auto dt4 = DateTime(1999, 1, 29, 12, 33, 33); dt4.roll!"months"(1, AllowDayOverflow.no); assert(dt4 == DateTime(1999, 2, 28, 12, 33, 33)); auto dt5 = DateTime(2000, 2, 29, 12, 30, 33); dt5.roll!"years"(1); assert(dt5 == DateTime(2001, 3, 1, 12, 30, 33)); auto dt6 = DateTime(2000, 2, 29, 12, 30, 33); dt6.roll!"years"(1, AllowDayOverflow.no); assert(dt6 == DateTime(2001, 2, 28, 12, 30, 33));
Authors
Jonathan M Davis and Kato Shoichi