«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.