Java 8 Дата и время API

В Java 8 представлен новый Date Time API на основе IS0-8601 стандартов даты и времени.  Date Time API использует календарную систему, определенную в ISO-8601 в качестве календаря по умолчанию. Этот календарь основан на системе Григорианского календаря.  Date-Time API использует Unicode Common Locale Data Repository (CLDR) для данных локали.

Date-Time API использует базу данных часовых поясов (TZDB) для получения информации о часовом поясе.

Методы в API корректно определены в Date-Time API, обеспечивает интуитивный интерфейс, который делает код легко читаемым. Вызовы методов могут быть соединены друг с другом. Например, мы можем использовать следующий код для создания новой даты.

Если вывести в консоль значения переменной allDay результатом работы программы будет информация, о том какой год, какой месяц и сколько дней в месяце.

Java Date-Time API состоит в основном из неизменяемых классов. После того, как объект создан, он не может быть изменен. Для того, чтобы изменить его значение, новый объект должен быть создан в качестве модифицированной копии оригинала.

Date-Time API потокобезопасно.

Методы , используемые для создания даты или времени объекты начинаются of, from, и with , а не конструкторами. Там нет набора методов. Например:

Java Date-Time API имеет отдельный набор классов, чтобы иметь дело с машинным временем и календарем на основе человеческого времени.

Дата-Время Пакеты

Java Date-Time API состоит из основного пакета, java.time и четырех подпакетов:

  • java.time содержит ядро API для представления даты и времени. Она включает в себя классы для даты, времени, даты и времени вместе взятых, часовых поясов, моменты времени , продолжительности и часы. LocalDate, LocalTime, LocalDateTime, ZonedDateTime, период, продолжительность и мгновенные классы в этом пакете. Классы в этом пакете основаны на ISO-8601 стандартах.
  • java.time.chrono содержит API для представления календаря, в отличии от того, что по умолчанию ISO-8601 в системмах. Например, Hijrah календарь, календарь ThaiBuddhist и т.д.
  • java.time.format содержит классы для форматирования парсинга даты и времени.
  • java.time.temporal содержит API позволяет совместимые операции между датой и временем классов, выполнения запросов и регулировки. Например, TemporalField и ChronoField и TemporalUnit и ChronoUnit.
  • java.time.zone содержит классы , которые поддерживают часовых поясов, смещения от часовых поясов, а также правила часовых поясов. Например, ZonedDateTime и ZoneId или ZoneOffset.

Названия методов в Java Date-Time API выполнены в соответствии с классами.

Например, метод now();  возвращает значения даты или времени на текущий момент. from(); метод позволяет преобразование из одного класса в другой.

В следующей таблице перечислены наиболее часто используемые префиксы методов:

  • of
    статический метод, который позволяет создать экземпляр ANDS проверки входных параметров
  • from
    статический метод который, преобразует входные параметры в экземпляр целевого класса.
  • parse
    статический метод, позволяет анализировать входную строку для создания экземпляра целевого класса.
  • format
    метод экземпляра, позволяет форматировать временный объект для получения строки.
  • get
    метод экземпляра, возвращает часть целевого объекта.
  • is
    метод экземпляра, запрашивает целевой объект.
  • with
    метод экземпляра, возвращает копию целевого объекта с одним элементом изменения.
  • plus
    метод экземпляра, возвращает копию объекта с количеством времени , с добавленнием.
  • minus
    метод экземпляра возвращает копию объекта с количеством времени , с вычитанием.
  • to
    метод экземпляра, преобразует этот объект в другой тип.
  • at
    метод экземпляра, объединяет этот объект с другим объектом.

Методы of()

Java Date-Time API  используются методы создания объектов.

Следующий код показывает, как создавать объекты класса LocalDate:

Результатом работы программы будет:

2016-12-31
2016-03-18
1975-07-10
2016-01-31

Метод from()

from()статический метод, который используется для получения объекта типа DateTime , из указанного аргумента.

В отличие от of(), from() требует преобразования данных на указанный аргумент.

Следующий код показывает, как вывести LocalDate из LocalDateTime:

Результатом работы программы будет:2016-03-18T23:30
2016-03-18

Метод with()

Для изменения поля в объекте даты и времени мы можем использовать метод с префиксом with

with() метод возвращает копию объекта с указанным полем изменения, так как большинство объектов в Date Time API неизменны.

Следующий код показывает, как получить LocalDate из другого LocalDate с изменением года:

Результатом выполнения программы будет:

2016-03-18
2015-03-18
2014-10-18

Метод get()

get()возвращает указанный элемент объекта.

Следующий код показывает , как получить год, месяц, день от LocalDate объекта:

Результатом работы программы будет:

2018
MARCH
19

Метод to()

to() преобразует объект в соответствующий тип.

Следующий код показывает некоторые примеры использования метода to().

Результатом работы программы будет: 16878

Метод at()

at() создает новый объект даты и времени из существующего объекта даты и времени с дополнительной информацией.

Рассмотрим следующий пример использования кода в методе, чтобы добавить дополнительную информацию для объекта даты.

Результатом работы программу будет:

2016-03-18
2016-03-18T00:00
2016-03-18T10:20

Метод plus()

plus() возвращает копию объекта путем добавления заданного значения.

Следующий код показывает, как использовать метод плюс, чтобы добавить больше времени для локального объекта даты.

Результатом работы программы будет:

2018-03-25
2018-05-18
2018-04-15

Метод minus()

minus() возвращает копию объекта путем вычитания заданного значения.

Следующий код показывает, как вычесть время из локального объекта даты.

Результатом работы такой программы будет:

2017-11-18
2018-02-11

Метод now()

now() метод возвращает текущее время для различых классов, например LocalDate, LocalTime, LocalDateTime, ZonedDateTime .

Следующий код показывает, как использовать метод now() для возврата текущей даты и времени.

Результатом работы программы будет:

2016-03-19
08:20:47.061
2016-03-19T08:20:47.061
2016-03-19T08:20:47.071+04:00[Europe/Moscow]

Обновлено: 08.04.2017 — 11:16

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.