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

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

1. обзор

В этом коротком руководстве мы рассмотрим, как извлечьyear,month иday  из заданногоDate in Java.

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

В Java 8 дляnumber of good reasons была введена совершенно новая библиотека даты и времени. Помимо других преимуществ,the new library provides a better API for operations such as extracting Year, Month, Day etc. from given Date.

А если вы ищете более подробную статью о новой библиотеке даты и времени, посмотритеhere.

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

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

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

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

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

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

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

calendar.get(Calendar.YEAR);

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

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

calendar.get(Calendar.MONTH);

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

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

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

calendar.get(Calendar.DAY_OF_MONTH);

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

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

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

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

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

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

Давайте рассмотрим эти методы для извлечения информации изa LocalDate instance namelocalDate.

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

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

localDate.getYear();

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

Точно так же для извлеченияMonth, we используйтеgetMonthValue API:

localDate.getMonthValue();

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

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

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

localDate.getDayOfMonth();

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

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

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

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