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 .