Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface Temporal extends TemporalAccessor
Это - основной тип интерфейса для даты, время и объекты смещения, которые достаточно полны, чтобы управляться, используя плюс и минус. Это реализуется теми классами, которые могут обеспечить и управлять информацией как полями или запросами. См. TemporalAccessor
для версии только для чтения этого интерфейса.
Большинство даты и информации времени могут быть представлены как число. Они моделируются, используя TemporalField
с числом, сохраненным, используя a long
обработать большие значения. Год, месяц и день-месячного являются простыми примерами полей, но они также включают момент и смещения. См. ChronoField
для стандартного набора полей.
Две части информации о дате/времени не могут быть представлены числами, хронологией и часовым поясом. Через них можно получить доступ queries
использование статических методов, определенных на TemporalQuery
.
Этот интерфейс является интерфейсом на уровне платформы, который не должен широко использоваться в коде программы. Вместо этого приложения должны создать и раздать экземпляры конкретных типов, такой как LocalDate
. Есть много причин этого, часть которого - то, что реализации этого интерфейса могут быть в календарных системах кроме ISO. См. ChronoLocalDate
для более полного обсуждения проблем.
class должен реализовать этот интерфейс, если это соответствует трем критериям:
TemporalAccessor
Четыре примера ясно дают понять это:
LocalDate
реализации этот интерфейс, поскольку это представляет ряд полей, которые непрерывны со дней к навсегда и не запрашивают внешней информации, чтобы определить законность каждой даты. Это поэтому в состоянии реализовать плюс/минус правильно. LocalTime
реализации этот интерфейс, поскольку это представляет ряд полей, которые непрерывны от nanos до в течение дней и не запрашивают внешней информации, чтобы определить законность. Это в состоянии реализовать плюс/минус правильно, перенося день. MonthDay
, комбинация месяца-летнего и дня-месячного, не реализует этот интерфейс. В то время как комбинация непрерывна от дней до месяцев в течение лет, у комбинации нет достаточной информации, чтобы определить допустимый диапазон значений в течение дня-месячного. Также, это неспособно реализовать плюс/минус правильно. Comparable
.Модификатор и Тип | Метод и Описание |
---|---|
default Temporal |
minus(long amountToSubtract, TemporalUnit unit)
Возвращает объект того же самого типа как этот объект с вычтенным установленным периодом.
|
default Temporal |
minus(TemporalAmount amount)
Возвращает объект того же самого типа как этот объект с вычтенным количеством.
|
long |
periodUntil(Temporal endTemporal, TemporalUnit unit)
Вычисляет количество времени до другого временного с точки зрения указанного модуля.
|
Временный |
plus(long amountToAdd, TemporalUnit unit)
Возвращает объект того же самого типа как этот объект с добавленным установленным периодом.
|
default Temporal |
plus(TemporalAmount amount)
Возвращает объект того же самого типа как этот объект с добавленным количеством.
|
default Temporal |
with(TemporalAdjuster adjuster)
Возвращает скорректированный объект того же самого типа как этот объект с внесенной корректировкой.
|
Временный |
with(TemporalField field, long newValue)
Возвращает объект того же самого типа как этот объект с указанным измененным полем.
|
get, getLong, isSupported, query, range
default Temporal with(TemporalAdjuster adjuster)
Это корректирует это разовое датой согласно правилам указанного регулятора. Простой регулятор мог бы просто установить то из полей, таких как поле года. Более сложный регулятор мог бы назначить дату к прошлому дню месяца. В выборе общих корректировок обеспечивают TemporalAdjuster
. Они включают обнаружение "в последний день месяца" и "следующей среды". Регулятор ответственен за обработку особых случаев, таких как переменные продолжительности месяца и високосных годов.
Некоторый пример кода, указывающий, как и почему этот метод используется:
date = date.with(Month.JULY); // most key classes implement TemporalAdjuster date = date.with(lastDayOfMonth()); // static import from Adjusters date = date.with(next(WEDNESDAY)); // static import from Adjusters and DayOfWeek
Реализация по умолчанию должна вести себя эквивалентная этому коду:
return adjuster.adjustInto(this);
adjuster
- регулятор, чтобы использовать, не нульDateTimeException
- если неспособный вносить корректировкуArithmeticException
- если числовое переполнение происходитTemporal with(TemporalField field, long newValue)
Это возвращает новое основанное на объектах на этом со значением для указанного измененного поля. Например, на a LocalDate
, это могло использоваться, чтобы установить год, месяц или день-месячного. У возвращенного объекта будет тот же самый заметный тип как этот объект.
В некоторых случаях изменение поля не полностью определяется. Например, если целевой объект является датой, представляющей 31-ого января, то изменение месяца до февраля было бы неясно. В случаях как это поле ответственно за разрешение результата. Обычно это выберет предыдущую допустимую дату, которая была бы прошлым допустимым днем февраля в этом примере.
ChronoField
. Если поле поддерживается, то корректировка должна быть выполнена. Если неподдерживающийся, то UnsupportedTemporalTypeException
должен быть брошен. Если поле не является a ChronoField
, тогда результат этого метода получается, вызывая TemporalField.adjustInto(Temporal, long)
передача this
как первый параметр.
Реализации не должны изменить или этот объект или указанный временный объект. Вместо этого должна быть возвращена скорректированная копия оригинала. Это обеспечивает эквивалентное, безопасное поведение для неизменных и изменчивых реализаций.
field
- поле, чтобы установить в результате, не нулеnewValue
- новое значение поля в результатеDateTimeException
- если поле не может быть установленоUnsupportedTemporalTypeException
- если поле не поддерживаетсяArithmeticException
- если числовое переполнение происходитdefault Temporal plus(TemporalAmount amount)
Это корректирует это временное, добавляя согласно правилам указанного количества. Количество обычно a Period
но может быть любой другой тип, реализовывая TemporalAmount
интерфейс, такой как Duration
.
Некоторый пример кода, указывающий, как и почему этот метод используется:
date = date.plus(period); // add a Period instance date = date.plus(duration); // add a Duration instance date = date.plus(workingDays(6)); // example user-written workingDays method
Отметьте тот вызов plus
сопровождаемый minus
как гарантируют, не возвратит разовое датой то же самое.
Реализация по умолчанию должна вести себя эквивалентная этому коду:
return amount.addTo(this);
amount
- количество, чтобы добавить, не нульDateTimeException
- если дополнение не может быть сделаноArithmeticException
- если числовое переполнение происходитTemporal plus(long amountToAdd, TemporalUnit unit)
Этот метод возвращает новое основанное на объектах на этом с добавленным установленным периодом. Например, на a LocalDate
, это могло использоваться, чтобы добавить много лет, месяцев или дней. У возвращенного объекта будет тот же самый заметный тип как этот объект.
В некоторых случаях изменение поля не полностью определяется. Например, если бы целевой объект является датой, представляющей 31-ого января, то добавление одного месяца было бы неясно. В случаях как это поле ответственно за разрешение результата. Обычно это выберет предыдущую допустимую дату, которая была бы прошлым допустимым днем февраля в этом примере.
ChronoUnit
. Если модуль поддерживается, то дополнение должно быть выполнено. Если неподдерживающийся, то UnsupportedTemporalTypeException
должен быть брошен. Если модуль не является a ChronoUnit
, тогда результат этого метода получается, вызывая TemporalUnit.addTo(Temporal, long)
передача this
как первый параметр.
Реализации не должны изменить или этот объект или указанный временный объект. Вместо этого должна быть возвращена скорректированная копия оригинала. Это обеспечивает эквивалентное, безопасное поведение для неизменных и изменчивых реализаций.
amountToAdd
- количество указанного модуля, чтобы добавить, может быть отрицательнымunit
- модуль периода, чтобы добавить, не нульDateTimeException
- если модуль не может быть добавленUnsupportedTemporalTypeException
- если модуль не поддерживаетсяArithmeticException
- если числовое переполнение происходитdefault Temporal minus(TemporalAmount amount)
Это корректирует это временное, вычитая согласно правилам указанного количества. Количество обычно a Period
но может быть любой другой тип, реализовывая TemporalAmount
интерфейс, такой как Duration
.
Некоторый пример кода, указывающий, как и почему этот метод используется:
date = date.minus(period); // subtract a Period instance date = date.minus(duration); // subtract a Duration instance date = date.minus(workingDays(6)); // example user-written workingDays method
Отметьте тот вызов plus
сопровождаемый minus
как гарантируют, не возвратит разовое датой то же самое.
Реализация по умолчанию должна вести себя эквивалентная этому коду:
return amount.subtractFrom(this);
amount
- количество, чтобы вычесть, не нульDateTimeException
- если вычитание не может быть сделаноArithmeticException
- если числовое переполнение происходитdefault Temporal minus(long amountToSubtract, TemporalUnit unit)
Этот метод возвращает новое основанное на объектах на этом с вычтенным установленным периодом. Например, на a LocalDate
, это могло использоваться, чтобы вычесть много лет, месяцев или дней. У возвращенного объекта будет тот же самый заметный тип как этот объект.
В некоторых случаях изменение поля не полностью определяется. Например, если бы целевой объект является датой, представляющей 31-ого марта, то вычитание одного месяца было бы неясно. В случаях как это поле ответственно за разрешение результата. Обычно это выберет предыдущую допустимую дату, которая была бы прошлым допустимым днем февраля в этом примере.
Реализации не должны изменить или этот объект или указанный временный объект. Вместо этого должна быть возвращена скорректированная копия оригинала. Это обеспечивает эквивалентное, безопасное поведение для неизменных и изменчивых реализаций.
Реализация по умолчанию должна вести себя эквивалентная этому коду:
return (amountToSubtract == Long.MIN_VALUE ? plus(Long.MAX_VALUE, unit).plus(1, unit) : plus(-amountToSubtract, unit));
amountToSubtract
- количество указанного модуля, чтобы вычесть, может быть отрицательнымunit
- модуль периода, чтобы вычесть, не нульDateTimeException
- если модуль не может быть вычтенUnsupportedTemporalTypeException
- если модуль не поддерживаетсяArithmeticException
- если числовое переполнение происходитlong periodUntil(Temporal endTemporal, TemporalUnit unit)
Это вычисляет количество времени между двумя временными объектами того же самого типа с точки зрения сингла TemporalUnit
. Запуск и конечные точки this
и указанное временное. Результат будет отрицателен, если конец будет перед запуском. Например, период в часах между двумя временными объектами может быть вычислен, используя startTime.periodUntil(endTime, HOURS)
.
Вычисление возвращает целое число, представляя число полных модулей между двумя temporals. Например, период в часах между временами 11:30 и 13:29 только будет одним часом, поскольку это - одна минута за исключением двух часов.
Есть два эквивалентных способа использовать этот метод. Первое должно вызвать этот метод непосредственно. Второе должно использовать TemporalUnit.between(Temporal, Temporal)
:
// these two lines are equivalent temporal = start.periodUntil(end, unit); temporal = unit.between(start, end);Выбор должен быть сделан основанный, которого делает код более читаемым.
Например, этот метод позволяет числу дней между двумя датами быть вычисленным:
long daysBetween = start.periodUntil(end, DAYS); // or alternatively long daysBetween = DAYS.between(start, end);
ChronoUnit
. UnsupportedTemporalTypeException
должен быть брошен для ChronoUnit
экземпляры, которые неподдерживаются. Если модуль не является a ChronoUnit
, тогда результат этого метода получается, вызывая TemporalUnit.between(Temporal, Temporal)
передача this
как первый параметр и ввод, временный как второй параметр.
В сводке реализации должны вести себя способом, эквивалентным этому коду:
// check input temporal is the same type as this class if (unit instanceof ChronoUnit) { // if unit is supported, then calculate and return result // else throw UnsupportedTemporalTypeException for unsupported units } return unit.between(this, endTemporal);
Ни этот объект, ни указанное временное, не могут быть изменены.
endTemporal
- временный конец, того же самого типа как этот объект, не нульunit
- модуль, чтобы измерить количество в, не нульDateTimeException
- если количество не может быть вычисленоUnsupportedTemporalTypeException
- если модуль не поддерживаетсяArithmeticException
- если числовое переполнение происходит
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92