Перейти к основному содержимому

Извлечение года, месяца и дня из даты в Java

· 3 мин. чтения

1. Обзор

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

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

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

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

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

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

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

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

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

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

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

calendar.get(Calendar.YEAR);

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

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

calendar.get(Calendar.MONTH);

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

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

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

calendar.get(Calendar.DAY_OF_MONTH);

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

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

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

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

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

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

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

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

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

localDate.getYear();

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

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

localDate.getMonthValue();

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

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

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

localDate.getDayOfMonth();

4. Вывод

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

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

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