PosInfInterval.shift

Shifts the begin of this interval forward or backwards in time by the given number of years and/or months (a positive number of years and months shifts the interval forward; a negative number shifts it backward). It adds the years the given years and months to begin. It effectively calls add!"years"() and then add!"months"() on begin with the given number of years and months.

  1. void shift(D duration)
  2. void shift(T years, T months, AllowDayOverflow allowOverflow)
    struct PosInfInterval(TP)
    static if(__traits(compiles, begin.add!"months"(1)) && __traits(compiles, begin.add!"years"(1)))
    void
    shift
    (
    T
    )

Parameters

years T

The number of years to shift the interval by.

months T

The number of months to shift the interval by.

allowOverflow AllowDayOverflow

Whether the days should be allowed to overflow on begin, causing its month to increment.

Throws

std.datetime.date.DateTimeException if this interval is empty or if the resulting interval would be invalid.

Examples

auto interval1 = PosInfInterval!Date(Date(1996, 1, 2));
auto interval2 = PosInfInterval!Date(Date(1996, 1, 2));

interval1.shift(dur!"days"(50));
assert(interval1 == PosInfInterval!Date(Date(1996, 2, 21)));

interval2.shift(dur!"days"(-50));
assert(interval2 == PosInfInterval!Date(Date(1995, 11, 13)));

Meta