txt: ## later.md
  later
  
  Combined from primary sources listed below.
  
  # [In role Dateish](#___top "go to top of document")[§](#(role_Dateish)_method_later "direct link")
  
  See primary documentation
  [in context](/type/Dateish#method_later)
  for **method later**.
  
  ```raku
  multi method later(DateTime:D: *%unit)
  ```
  
  Returns an object based on the current one (belonging to any class that mixes this role in), but with a time delta applied. The time delta can be passed as a named argument where the argument name is the unit.
  
  Unless the given unit is `second` or `seconds`, the given value will be converted to an [`Int`](/type/Int).
  
  Allowed units are `second`, `seconds`, `minute`, `minutes`, `hour`, `hours`, `day`, `days`, `week`, `weeks`, `month`, `months`, `year`, `years`. Please note that the plural forms can only be used with the `later` and `earlier` methods.
  
  The `:2nd` form of colonpairs can be used as a compact and self-documenting way of specifying the delta:
  
  ```raku
  say DateTime.new('2015-12-24T12:23:00Z').later(:2years);
  # OUTPUT: «2017-12-24T12:23:00Z␤»
  ```
  
  Since addition of several different time units is not commutative, only one unit may be passed (and the first multi will be used).
  
  ```raku
  my $d = DateTime.new(date => Date.new('2015-02-27'));
  say $d.later(month => 1).later(:2days);  # OUTPUT: «2015-03-29T00:00:00Z␤»
  say $d.later(days => 2).later(:1month);  # OUTPUT: «2015-04-01T00:00:00Z␤»
  say $d.later(days => 2).later(:month);   # same, as +True === 1
  ```
  
  You can also (since release 2021.02 of the Rakudo compiler) pass several units at the same time, but you will have to join them in a [`List`](/type/List) to activate the second form:
  
  ```raku
  say DateTime.new(date => Date.new('2015-02-27')).later( (:1month, :2days) )
  # OUTPUT: «2015-03-29T00:00:00Z␤»
  
  ```
  
  If the resultant time has value `60` for seconds, yet no leap second actually exists for that time, seconds will be set to `59`:
  
  ```raku
  say DateTime.new('2008-12-31T23:59:60Z').later: :1day;
  # OUTPUT: «2009-01-01T23:59:59Z␤»
  ```
  
  Negative offsets are allowed, though [earlier](/routine/earlier) is more idiomatic for that.
  
  Objects of type [`Date`](/type/Date) will behave in the same way:
  
  ```raku
  my $d = Date.new('2015-02-27');
  say $d.later(month => 1).later(:2days);  # OUTPUT: «2015-03-29␤»
  say $d.later(days => 2).later(:1month);  # OUTPUT: «2015-04-01␤»
  say $d.later(days => 2).later(:month);   # same, as +True === 1
  
  ```
  