/** * Gets the value of the specified field from this date-time as a {@code long}. * <p> * This queries this date-time for the value of the specified field. * If it is not possible to return the value, 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 valid * values based on this date-time. * 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.getFrom(TemporalAccessor)} * passing {@code this} as the argument. Whether the value can be obtained, * and what the value represents, is determined by the field. * * @param TemporalField $field the field to get, not null * @return int the value for the field * @throws DateTimeException if a value for the field cannot be obtained * @throws UnsupportedTemporalTypeException if the field is not supported * @throws ArithmeticException if numeric overflow occurs */ public function getLong(TemporalField $field) { if ($field instanceof ChronoField) { $f = $field; return $f->isTimeBased() ? $this->time->getLong($field) : $this->date->getLong($field); } return $field->getFrom($this); }
/** * @param TemporalField $field * @return int * @throws UnsupportedTemporalTypeException */ public function getLong(TemporalField $field) { $value = $this->fieldValues->get($field); if ($value !== null) { return $value; } if ($this->date !== null && $this->date->isSupported($field)) { return $this->date->getLong($field); } if ($this->time !== null && $this->time->isSupported($field)) { return $this->time->getLong($field); } if ($field instanceof CF) { throw new UnsupportedTemporalTypeException("Unsupported field: " . $field); } return $field->getFrom($this); }
/** * Gets the value of the specified field from this time as a {@code long}. * <p> * This queries this time for the value of the specified field. * If it is not possible to return the value, 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 valid * values based on this time. * 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.getFrom(TemporalAccessor)} * passing {@code this} as the argument. Whether the value can be obtained, * and what the value represents, is determined by the field. * * @param TemporalField $field the field to get, not null * @return int the value for the field * @throws DateTimeException if a value for the field cannot be obtained * @throws UnsupportedTemporalTypeException if the field is not supported * @throws ArithmeticException if numeric overflow occurs */ public function getLong(TemporalField $field) { if ($field instanceof ChronoField) { if ($field == ChronoField::OFFSET_SECONDS()) { return $this->offset->getTotalSeconds(); } return $this->time->getLong($field); } return $field->getFrom($this); }