Ejemplo n.º 1
0
 public function range(TemporalField $field)
 {
     if ($field instanceof ChronoField) {
         if ($this->isSupported($field)) {
             $f = $field;
             switch ($f) {
                 case CF::DAY_OF_MONTH():
                 case CF::DAY_OF_YEAR():
                 case CF::ALIGNED_WEEK_OF_MONTH():
                     return $this->isoDate->range($field);
                 case CF::YEAR_OF_ERA():
                     $range = CF::YEAR()->range();
                     $max = $this->getProlepticYear() <= 0 ? -($range->getMinimum() + ThaiBuddhistChronology::YEARS_DIFFERENCE) + 1 : $range->getMaximum() + ThaiBuddhistChronology::YEARS_DIFFERENCE;
                     return ValueRange::of(1, $max);
             }
             return $this->getChronology()->range($f);
         }
         throw new UnsupportedTemporalTypeException("Unsupported field: " . $field);
     }
     return $field->rangeRefinedBy($this);
 }
Ejemplo n.º 2
0
 /**
  * Gets the range of valid values for the specified field.
  * <p>
  * The range object expresses the minimum and maximum valid values for a field.
  * This date-time is used to enhance the accuracy of the returned range.
  * If it is not possible to return the range, because the field is not supported
  * or for some other reason, an exception is thrown.
  * <p>
  * If the field is a {@link ChronoField} then the query is implemented here.
  * The {@link #isSupported(TemporalField) supported fields} will return
  * appropriate range instances.
  * All other {@code ChronoField} instances will throw an {@code UnsupportedTemporalTypeException}.
  * <p>
  * If the field is not a {@code ChronoField}, then the result of this method
  * is obtained by invoking {@code TemporalField.rangeRefinedBy(TemporalAccessor)}
  * passing {@code this} as the argument.
  * Whether the range can be obtained is determined by the field.
  *
  * @param TemporalField $field the field to query the range for, not null
  * @return ValueRange the range of valid values for the field, not null
  * @throws DateTimeException if the range for the field cannot be obtained
  * @throws UnsupportedTemporalTypeException if the field is not supported
  */
 public function range(TemporalField $field)
 {
     if ($field instanceof ChronoField) {
         $f = $field;
         return $f->isTimeBased() ? $this->time->range($field) : $this->date->range($field);
     }
     return $field->rangeRefinedBy($this);
 }