«1. Обзор

В этом коротком руководстве мы рассмотрим, как извлечь год, месяц и день из заданной даты в Java.

Мы рассмотрим, как извлечь эти значения с помощью устаревшего класса java.util.Date, а также с помощью новой библиотеки даты и времени Java 8.

В Java 8 совершенно новая дата и время библиотека была введена по ряду веских причин. Помимо других преимуществ, новая библиотека предоставляет улучшенный API для таких операций, как извлечение года, месяца, дня и т. д. из заданной даты.

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

2. Использование Java 7

Для данного java.util.Date для извлечения отдельных полей, таких как год, месяц, день и т. д., первый шаг, который нам нужно сделать, это преобразовать его в экземпляр календаря:

Date date = // the date instance
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Когда у нас есть экземпляр Calendar, мы можем напрямую вызвать его метод get и предоставить конкретное поле, которое мы хотим извлечь.

Мы можем использовать константы, присутствующие в календаре, для извлечения определенных полей.

2.1. Get Year

Чтобы извлечь год, мы можем вызвать get, передав Calendar.YEAR в качестве аргумента:

calendar.get(Calendar.YEAR);

2.2. Получить месяц

Аналогично, чтобы извлечь месяц, мы можем вызвать get, передав Calendar.MONTH в качестве аргумента:

calendar.get(Calendar.MONTH);

Обратите внимание, что месяцы в календаре имеют нулевой индекс; для января этот метод вернет 0.

2.3. Get Day

Наконец, чтобы извлечь день, мы вызываем get, передавая Calendar.DAY_OF_MONTH в качестве аргумента:

calendar.get(Calendar.DAY_OF_MONTH);

3. Использование Java 8

Новый пакет java.time содержит ряд классов, которые может использоваться для представления даты.

Каждый класс отличается дополнительной информацией, которую он хранит в дополнение к дате.

Базовый LocalDate просто содержит информацию о дате, в то время как LocalDateTime содержит дату, а также информацию о времени.

Точно так же более продвинутые классы, такие как OffsetDateTime и ZonedDateTime, содержат дополнительную информацию о смещении от UTC и информацию о часовом поясе соответственно.

В любом случае все эти классы поддерживают прямые методы для извлечения информации о годе, месяце и дате.

Давайте рассмотрим эти методы для извлечения информации из экземпляра LocalDate с именем localDate.

3.1. Получить год

Чтобы извлечь год, LocalDate просто предоставляет метод getYear:

localDate.getYear();

3.2. Получить месяц

Точно так же для извлечения месяца мы используем API getMonthValue:

localDate.getMonthValue();

В отличие от календаря, месяцы в LocalDate индексируются с 1; для января это вернет 1.

3.3. Получить день

Наконец, для извлечения дня у нас есть метод getDayOfMonth:

localDate.getDayOfMonth();

4. Заключение

В этом кратком руководстве мы рассмотрели, как извлечь целочисленные значения года, месяца и дня из даты. в Яве.

Мы показали, как извлекать эти значения, используя старые классы Date и Calendar, а также новую библиотеку даты и времени Java8.

Полный исходный код фрагментов, используемых в этом руководстве, доступен на Github.