anchor.diff:  | `datetime.truncate('*millennium*', _input_)` | _DateTime_, _LocalDateTime_^†^, _Date_^†^
   | `localdatetime.truncate('*millennium*', _input_)`, | _DateTime_, _LocalDateTime_, _Date_
   | `date.truncate('*millennium*', _input_)` | _DateTime_, _LocalDateTime_, _Date_
  +3+| *Example:* `date.truncate('millennium', datetime("2017-09-26T11:26:42+01"))` _yields_ `date("2000-01-01")`
   
   .3+| `century` +
   Select the temporal instant corresponding to the century of the given instant.
   | `datetime.truncate('*century*', _input_)` | _DateTime_, _LocalDateTime_^†^, _Date_^†^
   | `localdatetime.truncate('*century*', _input_)`, | _DateTime_, _LocalDateTime_, _Date_
   | `date.truncate('*century*', _input_)` | _DateTime_, _LocalDateTime_, _Date_
  +3+| *Example:* `date.truncate('century', localdatetime("1986-02-28T23:21"))` _yields_ `date("1900-01-01")`
   
   .3+| `decade` +
   Select the temporal instant corresponding to the decade of the given instant.
   | `datetime.truncate('*decade*', _input_)` | _DateTime_, _LocalDateTime_^†^, _Date_^†^
   | `localdatetime.truncate('*decade*', _input_)`, | _DateTime_, _LocalDateTime_, _Date_
   | `date.truncate('*decade*', _input_)` | _DateTime_, _LocalDateTime_, _Date_
  +3+| *Example:* `date.truncate('decade', date("1986-04-26"))` _yields_ `date("1980-01-01")`
   
   .3+| `year` +
   Select the temporal instant corresponding to the year of the given instant.
   | `datetime.truncate('*year*', _input_)` | _DateTime_, _LocalDateTime_^†^, _Date_^†^
   | `localdatetime.truncate('*year*', _input_)`, | _DateTime_, _LocalDateTime_, _Date_
   | `date.truncate('*year*', _input_)` | _DateTime_, _LocalDateTime_, _Date_
  +3+| *Example:* `date.truncate('year', date("2015-08-21"))` _yields_ `date("2015-01-01")`
  +
  +.3+| `weekYear` +
  +Select the temporal instant corresponding to the first day of the first week of the week-year of the given instant.
  +| `datetime.truncate('*weekYear*', _input_)` | _DateTime_, _LocalDateTime_^†^, _Date_^†^
  +| `localdatetime.truncate('*weekYear*', _input_)`, | _DateTime_, _LocalDateTime_, _Date_
  +| `date.truncate('*weekYear*', _input_)` | _DateTime_, _LocalDateTime_, _Date_
  +3+| *Example:* `date.truncate('weekYear', date("2015-08-21"))` _yields_ `date("2014-12-29")`
   
   .3+| `quarter` +
   Select the temporal instant corresponding to the quarter of the year of the given instant.
   | `datetime.truncate('*quarter*', _input_)` | _DateTime_, _LocalDateTime_^†^, _Date_^†^
   | `localdatetime.truncate('*quarter*', _input_)`, | _DateTime_, _LocalDateTime_, _Date_
   | `date.truncate('*quarter*', _input_)` | _DateTime_, _LocalDateTime_, _Date_
  +3+| *Example:* `date.truncate('quarter', date("2018-06-28"))` _yields_ `date("2018-04-01")`
   
   .3+| `month` +
   Select the temporal instant corresponding to the month of the given instant.
   | `datetime.truncate('*month*', _input_)` | _DateTime_, _LocalDateTime_^†^, _Date_^†^
   | `localdatetime.truncate('*month*', _input_)`, | _DateTime_, _LocalDateTime_, _Date_
   | `date.truncate('*month*', _input_)` | _DateTime_, _LocalDateTime_, _Date_
  +3+| *Example:* `localdatetime.truncate('month', date("2011-11-21"))` _yields_ `localdatetime("2011-11-01T00:00:00")`
   
   .3+| `week` +
   Select the temporal instant corresponding to the week of the given instant.
   | `datetime.truncate('*week*', _input_)` | _DateTime_, _LocalDateTime_^†^, _Date_^†^
   | `localdatetime.truncate('*week*', _input_)`, | _DateTime_, _LocalDateTime_, _Date_
   | `date.truncate('*week*', _input_)` | _DateTime_, _LocalDateTime_, _Date_
  +3+| *Example:* `datetime.truncate('week', date("2014-12-30"))` _yields_ `datetime("2014-12-29T00:00:00+0200[Africa/Johannesburg]")` (if the default timezone is South African Standard Time)
   
   .5+| `day` +
   Select the temporal instant corresponding to the month of the given instant.
  
positive.code: The components that can be specified are the same as the ones that can be <<iso8601-duration,specified through the ISO 8601 syntax>>:
  
   * `years`
   * `months`
   * `weeks`
   * `days`
  
negative.code:  * `instant.nanosecond` - the _nanosecond_ component as an integer (0-999999999)
   * `instant.timezone` - the _timezone_ as a string, either as a timezone name or as an offset from UTC in the format `±HHMM`, depending on how the timezone was specified.
   * `instant.offset` - the _timezone_ offset as a string, in the format `±HHMM`
   * `instant.offsetMinutes` - the _timezone_ offset in minutes
   * `instant.offsetSeconds` - the _timezone_ offset in seconds
   * `instant.epochMillis` - the number of milliseconds between `1970-01-01T00:00:00+0000` and the instant, positive for instants after and negative for instants before.
   * `instant.epochSeconds` - the number of seconds between `1970-01-01T00:00:00+0000` and the instant, positive for instants after and negative for instants before.
     For the nanosecond part of the epoch offset, the regular `nanosecond` component (`instant.nanosecond`) can be used.
  
  
  ==== Available components per instant type
  