code: public static PeriodDuration between(Temporal startInclusive, Temporal endExclusive) {
          LocalDate startDate = startInclusive.query(TemporalQueries.localDate());
          LocalDate endDate = endExclusive.query(TemporalQueries.localDate());
          Period period = Period.ZERO;
          if (startDate != null && endDate != null) {
              period = Period.between(startDate, endDate);
          }
          LocalTime startTime = startInclusive.query(TemporalQueries.localTime());
          LocalTime endTime = endExclusive.query(TemporalQueries.localTime());
          startTime = startTime != null ? startTime : LocalTime.MIDNIGHT;
          endTime = endTime != null ? endTime : LocalTime.MIDNIGHT;
          Duration duration = Duration.between(startTime, endTime);
          return PeriodDuration.of(period, duration);
      }
docs: Obtains an instance consisting of the amount of time between two temporals.
  <p>
  The start is included, but the end is not.
  The result of this method can be negative if the end is before the start.
  <p>
  The calculation examines the temporals and extracts {@link LocalDate} and {@link LocalTime}.
  If the time is missing, it will be defaulted to midnight.
  If one date is missing, it will be defaulted to the other date.
  It then finds the amount of time between the two dates and between the two times.
  
  @param startInclusive  the start, inclusive, not null
  @param endExclusive  the end, exclusive, not null
  @return the number of days between this date and the end date, not null