code: public static ZoneOffset from(TemporalAccessor temporal) {
          Objects.requireNonNull(temporal, "temporal");
          ZoneOffset offset = temporal.query(TemporalQueries.offset());
          if (offset == null) {
              throw new DateTimeException("Unable to obtain ZoneOffset from TemporalAccessor: " +
                      temporal + " of type " + temporal.getClass().getName());
          }
          return offset;
      }
docs: Obtains an instance of {@code ZoneOffset} from a temporal object.
  <p>
  This obtains an offset based on the specified temporal.
  A {@code TemporalAccessor} represents an arbitrary set of date and time information,
  which this factory converts to an instance of {@code ZoneOffset}.
  <p>
  A {@code TemporalAccessor} represents some form of date and time information.
  This factory converts the arbitrary temporal object to an instance of {@code ZoneOffset}.
  <p>
  The conversion uses the {@link TemporalQueries#offset()} query, which relies
  on extracting the {@link ChronoField#OFFSET_SECONDS OFFSET_SECONDS} field.
  <p>
  This method matches the signature of the functional interface {@link TemporalQuery}
  allowing it to be used as a query via method reference, {@code ZoneOffset::from}.
  
  @param temporal  the temporal object to convert, not null
  @return the zone-offset, not null
  @throws DateTimeException if unable to convert to an {@code ZoneOffset}