|
Spec-Zone .ru
спецификации, руководства, описания, API
|
| Класс | Описание |
|---|---|
| Часы |
Доступ обеспечения часов к текущему моменту, дате и время, используя часовой пояс.
|
| Продолжительность |
Основанное на времени количество времени, такое как '34.5 секунды.
|
| Момент |
Мгновенная точка на временной шкале.
|
| LocalDate |
Дата без часового пояса в календарной системе ISO 8601, такой как
2007-12-03. |
| LocalDateTime |
Разовое датой без часового пояса в календарной системе ISO 8601, такой как
2007-12-03T10:15:30. |
| LocalTime |
Время без часового пояса в календарной системе ISO 8601, такой как
10:15:30. |
| MonthDay |
Дневное месяцем в календарной системе ISO 8601, такой как
--12-03. |
| OffsetDateTime |
Разовое датой со смещением от UTC/Гринвича в календарной системе ISO 8601, такой как
2007-12-03T10:15:30+01:00. |
| OffsetTime |
Время со смещением от UTC/Гринвича в календарной системе ISO 8601, такой как
10:15:30+01:00. |
| Период |
Основанное на дате количество времени, такое как '2 года, 3 месяца и 4 дня.
|
| Год |
Год в календарной системе ISO 8601, такой как
2007. |
| YearMonth |
Месячное годом в календарной системе ISO 8601, такой как
2007-12. |
| ZonedDateTime |
Разовое датой с часовым поясом в календарной системе ISO 8601, такой как
2007-12-03T10:15:30+01:00 Europe/Paris. |
| ZoneId |
ID часового пояса, такой как
Europe/Paris. |
| ZoneOffset |
Смещение часового пояса из Гринвича/UTC, такой как
+02:00. |
| Перечисление | Описание |
|---|---|
| DayOfWeek |
День-недельного, такой как в 'вторник'.
|
| Месяц |
Месяц-летнего, такой как 'июль'.
|
| Исключение | Описание |
|---|---|
| DateTimeException |
Исключение, используемое, чтобы указать на проблему, вычисляя разовое датой.
|
Основной API для дат, времена, моменты, и продолжительности.
Классы, определенные здесь, представляют основные разовые датой понятия, включая моменты, продолжительности, даты, времена, часовые пояса и периоды. Они основаны на календарной системе ISO, которая является фактическим мировым календарем после преждевременных Грегорианских правил. Все классы являются неизменными и ориентированными на многопотоковое исполнение.
Каждый экземпляр времени даты составляется из полей, которые удобно делаются доступными API. Поскольку более низкий доступ уровня к полям обращается к java.time.temporal пакет. Каждый class включает поддержку печати и парсинга всего способа дат и времена. Обратитесь к java.time.format пакет для опций настройки.
java.time.chrono пакет содержит календарь нейтральный API ChronoLocalDate, ChronoLocalDateTime, ChronoZonedDateTime и Era. Это предназначается для использования приложениями, которые должны использовать локализованные календари. Рекомендуется, чтобы приложения использовали дату ISO 8601 и классы времени от этого пакета через системные границы, такой относительно базы данных или по сети. Календарь нейтральный API должен быть зарезервирован для взаимодействий с пользователями.
Instant по существу числовая метка времени. Текущий Момент может быть получен от a Clock. Это полезно для журналирования и персистентности момента времени и имеет в прошлом, связанный с хранением следствия System.currentTimeMillis().
LocalDate хранит дату без времени. Это хранит дату как '2010-12-03' и могло использоваться, чтобы сохранить день рождения.
LocalTime хранит время без даты. Это хранит время как '11:30' и могло использоваться, чтобы сохранить время открытия или время закрытия.
LocalDateTime хранит дату и время. Это хранит разовое датой как '2010-12-03T11:30'.
ZonedDateTime хранит дату и время с часовым поясом. Это полезно, если Вы хотите выполнить точные вычисления дат и времена, принимая во внимание ZoneId, такой как 'Европа/Париж'. Где только возможно рекомендуется использовать более простой class без часового пояса. Широкое использование часовых поясов имеет тенденцию добавлять значительную сложность к приложению.
Вне дат и времена, API также позволяет хранение периода и продолжительности времени. A Duration простая мера времени вдоль временной шкалы в наносекундах. A Period выражает количество времени в модулях, значимых для людей, таких как годы или часы.
Month хранит месяц самостоятельно. Это хранит единственный месяц-летнего в изоляции, такой как 'ДЕКАБРЬ'.
DayOfWeek хранит день-недельного самостоятельно. Это хранит единственный день-недельного в изоляции, такой как в 'вторник'.
Year хранит год самостоятельно. Это хранит год в изоляции, такой как '2010'.
YearMonth хранит год и месяц безо дня или времени. Это хранит год и месяц, такой как '2010-12' и могло использоваться для истечения кредитной карты.
MonthDay хранит месяц и день без года или времени. Это хранит месяц и день-месячного, такой как '-12-03' и могло использоваться, чтобы сохранить ежегодное мероприятие как день рождения, не храня год.
OffsetTime хранит время и смещение от UTC без даты. Это хранит дату как '11:30+01:00'. ZoneOffset имеет форму '+01:00'.
OffsetDateTime хранит дату и время и смещение от UTC. Это хранит разовое датой как '2010-12-03T11:30+01:00'. Это иногда находится в сообщениях XML и других формах персистентности, но содержит меньше информации чем весь часовой пояс.
Если не указано иное, передача нулевого параметра конструктору или методу в любом class или интерфейсу в этом пакете вызовет a NullPointerException быть брошенным. Javadoc "@param" определение используется, чтобы суммировать нулевое поведение. "@throws NullPointerException"явно не документируется в каждый метод.
Все вычисления должны проверить на числовое переполнение и бросить любого ArithmeticException или a DateTimeException.
API был разработан, чтобы отклонить нуль рано и согласиться с этим поведением. Ключевое исключение является любым методом, который берет объект и возвращает булево, с целью проверки или проверки допустимости, обычно возвратит false для нуля.
API разрабатывается, чтобы быть безопасным с точки зрения типов где разумный в основном высокоуровневом API. Таким образом есть отдельные классы для отличного понятия даты, разовой временем и датой, плюс разновидности для смещения и часового пояса. Это может походить на большое количество классов, но большинство приложений может начаться только с пяти типов даты/времени.
Instant - метка времениLocalDate - дата без времени, или любая ссылка на смещение или часовой поясLocalTime - время без даты, или любая ссылка на смещение или часовой поясLocalDateTime - комбинирует дату и время, но все еще без любого смещения или часового поясаZonedDateTime - "полное" разовое датой с часовым поясом и разрешенным смещением от UTC/Гринвича
Instant самый близкий эквивалентный class к java.util.Date. ZonedDateTime самый близкий эквивалентный class к java.util.GregorianCalendar.
Где только возможно приложения должны использовать LocalDate, LocalTime и LocalDateTime лучше смоделировать домен. Например, день рождения должен быть сохранен в коде LocalDate. Примите во внимание, что любое использование часового пояса, такого как 'Европа/Париж', добавляет значительную сложность к вычислению. Много приложений могут быть записаны, только используя LocalDate, LocalTime и Instant, с часовым поясом, добавленным в пользовательском интерфейсе (UI) уровень.
Основанные на смещении разовые датой типы OffsetTime и OffsetDateTime, предназначаются прежде всего для использования с сетевыми протоколами и доступом к базе данных. Например, большинство баз данных не может автоматически сохранить часовой пояс как 'Европа/Париж', но они могут сохранить смещение как '+02:00'.
Классы также обеспечиваются для самых важных подразделений даты, включая Month, DayOfWeek, Year, YearMonth и MonthDay. Они могут использоваться, чтобы смоделировать более сложные разовые датой понятия. Например, YearMonth полезно для представления истечения кредитной карты.
Отметьте, что, в то время как есть большое количество классов, представляющих различные аспекты дат, есть относительно немногие, имея дело с различными аспектами времени. Следующая безопасность типов к ее логическому выводу привела бы к классам для минутного часом, "минута часа вторая" и "минута часа вторая наносекунда". В то время как логически чистый, это не было практической опцией, поскольку она почти утроит число классов из-за комбинаций даты и время. Таким образом, LocalTime используется для всей точности времени, с обнуляет используемый, чтобы подразумевать более низкую точность.
После полной безопасности типов к ее окончательному заключению мог бы также привести доводы в пользу отдельного class для каждого поля в разовом датой, такого как class для HourOfDay и другой для DayOfMonth. Этот подход попробовали, но был чрезмерно усложнен на языке Java, испытывая недостаток в удобстве пользования. Подобная проблема происходит с периодами. Есть случай для отдельного class для каждого модуля периода, такого как тип в течение многих Лет и тип в течение многих Минут. Однако, это приводит к большому количеству классов и проблеме преобразования типов. Таким образом набор разовых датой обеспеченных типов является компромиссом между чистотой и практичностью.
У API есть относительно большая площадь поверхности с точки зрения числа методов. Это делается управляемым с помощью непротиворечивых префиксов метода.
of - статический метод фабрикиparse - статический метод фабрики фокусировался на парсингеget - получает значение чего-тоis - проверки, если что-то - истинаwith - неизменный эквивалент метода setplus - добавляет количество к объектуminus - вычитает количество из объектаto - преобразовывает этот объект в другой типat - комбинирует этот объект с другим, такой как date.atTime(time)Многократные календарные системы являются неуклюжим дополнением к проблемам проекта. Первый принципал - то, что большинство пользователей хочет стандартную календарную систему ISO. Также, основные классы только для ISO. Второй принципал - то, что большинство из тех, которые хотят календарную систему не-ISO, хочет ее для взаимодействия с пользователем, таким образом это - проблема локализации UI. Также, дата и объекты времени должны быть сохранены, поскольку ISO возражает в модели данных и персистентном хранении, только будучи преобразованным в и от локального календаря для дисплея. Календарная система была бы сохранена отдельно в пользовательских настройках.
Есть, однако, некоторые ограниченные варианты использования, где пользователи полагают, что они должны сохранить и использовать даты в произвольных календарных системах всюду по приложению. Это поддерживается ChronoLocalDate, однако жизненно важно считать все связанные предупреждения в Javadoc того интерфейса перед использованием этого. В сводке приложения, которые требуют общего взаимодействия между многократными календарными системами обычно, должны писаться совсем другим способом к тем, которые только используют календарь ISO, таким образом большинство приложений должно только использовать ISO и избежать ChronoLocalDate.
API также разрабатывается для пользовательской расширяемости, поскольку есть много способов вычислить время. Поле и API модуля, через который получают доступ TemporalAccessor и Temporal обеспечьте значительную гибкость для приложений. Кроме того, TemporalQuery и TemporalAdjuster интерфейсы обеспечивают ежедневное питание, позволяя код читать близко к бизнес-требованиям:
LocalDate customerBirthday = customer.loadBirthdayFromDatabase();
LocalDate today = LocalDate.now();
if (customerBirthday.equals(today)) {
LocalDate specialOfferExpiryDate = today.plusWeeks(2).with(next(FRIDAY));
customer.sendBirthdaySpecialOffer(specialOfferExpiryDate);
}
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92