code: public ZonedDateTime minusHours(long hours) {
          return (hours == Long.MIN_VALUE ? plusHours(Long.MAX_VALUE).plusHours(1) : plusHours(-hours));
      }
docs: Returns a copy of this {@code ZonedDateTime} with the specified number of hours subtracted.
  <p>
  This operates on the instant time-line, such that subtracting one hour will
  always be a duration of one hour earlier.
  This may cause the local date-time to change by an amount other than one hour.
  Note that this is a different approach to that used by days, months and years,
  thus subtracting one day is not the same as adding 24 hours.
  <p>
  For example, consider a time-zone where the spring DST cutover means that the
  local times 01:00 to 01:59 occur twice changing from offset +02:00 to +01:00.
  <ul>
  <li>Subtracting one hour from 02:30+01:00 will result in 01:30+02:00
  <li>Subtracting one hour from 01:30+01:00 will result in 01:30+02:00
  <li>Subtracting one hour from 01:30+02:00 will result in 00:30+01:00
  <li>Subtracting three hours from 02:30+01:00 will result in 00:30+02:00
  </ul>
  <p>
  This instance is immutable and unaffected by this method call.
  
  @param hours  the hours to subtract, may be negative
  @return a {@code ZonedDateTime} based on this date-time with the hours subtracted, not null
  @throws DateTimeException if the result exceeds the supported date range