Извлечение года, месяца и дня от даты в 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.